summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rwxr-xr-xconfigure46
-rw-r--r--demos/declarative/flickr/mobile/TitleBar.qml2
-rw-r--r--demos/declarative/photoviewer/PhotoViewerCore/EditableButton.qml2
-rw-r--r--demos/declarative/samegame/SamegameCore/Dialog.qml5
-rw-r--r--demos/declarative/samegame/samegame.qml20
-rw-r--r--demos/declarative/snake/content/HighScoreModel.qml2
-rw-r--r--demos/declarative/snake/content/snake.js1
-rw-r--r--demos/declarative/snake/snake.qml12
-rw-r--r--demos/declarative/twitter/TwitterCore/HomeTitleBar.qml2
-rw-r--r--demos/declarative/twitter/TwitterCore/TitleBar.qml2
-rw-r--r--demos/declarative/twitter/twitter.qml5
-rw-r--r--demos/declarative/webbrowser/content/Button.qml10
-rw-r--r--demos/declarative/webbrowser/content/Header.qml22
-rw-r--r--demos/declarative/webbrowser/content/UrlInput.qml11
-rw-r--r--demos/declarative/webbrowser/content/pics/go-jump-locationbar.pngbin0 -> 714 bytes
-rw-r--r--demos/declarative/webbrowser/webbrowser.qml1
-rw-r--r--demos/embedded/embedded.pro5
-rw-r--r--demos/embedded/fluidlauncher/config_s60/config.xml7
-rw-r--r--demos/embedded/fluidlauncher/fluidlauncher.pro13
-rw-r--r--demos/embedded/fluidlauncher/screenshots/qmlcalculator.pngbin0 -> 15455 bytes
-rw-r--r--demos/embedded/fluidlauncher/screenshots/qmlclocks.pngbin0 -> 12409 bytes
-rw-r--r--demos/embedded/fluidlauncher/screenshots/qmldialcontrol.pngbin0 -> 16811 bytes
-rw-r--r--demos/embedded/fluidlauncher/screenshots/qmleasing.pngbin0 -> 3453 bytes
-rw-r--r--demos/embedded/fluidlauncher/screenshots/qmlflickr.jpgbin0 -> 35616 bytes
-rw-r--r--demos/embedded/fluidlauncher/screenshots/qmlphotoviewer.jpgbin0 -> 24216 bytes
-rw-r--r--demos/embedded/fluidlauncher/screenshots/qmltwitter.jpgbin0 -> 35159 bytes
-rw-r--r--demos/embedded/qmlcalculator/deployment.pri7
-rw-r--r--demos/embedded/qmlcalculator/qmlcalculator.cpp78
-rw-r--r--demos/embedded/qmlcalculator/qmlcalculator.pro12
-rw-r--r--demos/embedded/qmlclocks/deployment.pri7
-rw-r--r--demos/embedded/qmlclocks/qmlclocks.cpp78
-rw-r--r--demos/embedded/qmlclocks/qmlclocks.pro12
-rw-r--r--demos/embedded/qmldialcontrol/deployment.pri7
-rw-r--r--demos/embedded/qmldialcontrol/qmldialcontrol.cpp66
-rw-r--r--demos/embedded/qmldialcontrol/qmldialcontrol.pro11
-rw-r--r--demos/embedded/qmleasing/deployment.pri7
-rw-r--r--demos/embedded/qmleasing/qmleasing.cpp66
-rw-r--r--demos/embedded/qmleasing/qmleasing.pro11
-rw-r--r--demos/embedded/qmlflickr/deployment.pri7
-rw-r--r--demos/embedded/qmlflickr/qmlflickr.cpp92
-rw-r--r--demos/embedded/qmlflickr/qmlflickr.pro14
-rw-r--r--demos/embedded/qmlphotoviewer/deployment.pri7
-rw-r--r--demos/embedded/qmlphotoviewer/qmlphotoviewer.cpp92
-rw-r--r--demos/embedded/qmlphotoviewer/qmlphotoviewer.pro14
-rw-r--r--demos/embedded/qmltwitter/deployment.pri7
-rw-r--r--demos/embedded/qmltwitter/qmltwitter.cpp92
-rw-r--r--demos/embedded/qmltwitter/qmltwitter.pro14
-rw-r--r--demos/qmediaplayer/qmediaplayer.pro2
-rw-r--r--demos/spectrum/app/spectrum.sh41
-rw-r--r--demos/spectrum/spectrum.pro3
-rw-r--r--dist/changes-4.7.045
-rw-r--r--doc/src/declarative/animation.qdoc149
-rw-r--r--doc/src/declarative/basictypes.qdoc476
-rw-r--r--doc/src/declarative/declarativeui.qdoc1
-rw-r--r--doc/src/declarative/elements.qdoc12
-rw-r--r--doc/src/declarative/examples.qdoc2
-rw-r--r--doc/src/declarative/extending.qdoc10
-rw-r--r--doc/src/declarative/pics/anchorchanges.pngbin0 -> 566 bytes
-rw-r--r--doc/src/declarative/pics/gridview-highlight.pngbin0 -> 11806 bytes
-rw-r--r--doc/src/declarative/pics/gridview-simple.pngbin0 -> 10149 bytes
-rw-r--r--doc/src/declarative/pics/gridview.pngbin10564 -> 0 bytes
-rw-r--r--doc/src/declarative/pics/listmodel-nested.pngbin0 -> 7493 bytes
-rw-r--r--doc/src/declarative/pics/listmodel.pngbin0 -> 3407 bytes
-rw-r--r--doc/src/declarative/pics/parentchange.pngbin0 -> 509 bytes
-rw-r--r--doc/src/declarative/pics/repeater-simple.pngbin0 -> 404 bytes
-rw-r--r--doc/src/declarative/pics/translate.pngbin0 -> 398 bytes
-rw-r--r--doc/src/declarative/pics/visualitemmodel.pngbin0 -> 347 bytes
-rw-r--r--doc/src/declarative/qdeclarativedocument.qdoc18
-rw-r--r--doc/src/declarative/qdeclarativeperformance.qdoc120
-rw-r--r--doc/src/declarative/qdeclarativestates.qdoc52
-rw-r--r--doc/src/declarative/qmlruntime.qdoc22
-rw-r--r--doc/src/examples/qml-examples.qdoc16
-rw-r--r--doc/src/examples/waitconditions.qdoc2
-rw-r--r--doc/src/howtos/openvg.qdoc5
-rw-r--r--doc/src/images/qml-image-example.pngbin0 -> 58184 bytes
-rw-r--r--doc/src/internationalization/linguist-manual.qdoc9
-rw-r--r--doc/src/platforms/emb-openvg.qdocinc4
-rw-r--r--doc/src/snippets/declarative/anchorchanges.qml69
-rw-r--r--doc/src/snippets/declarative/animation.qml181
-rw-r--r--doc/src/snippets/declarative/createQmlObject.qml4
-rw-r--r--doc/src/snippets/declarative/gridview/ContactModel.qml (renamed from doc/src/snippets/declarative/gridview/dummydata/ContactModel.qml)14
-rw-r--r--doc/src/snippets/declarative/gridview/gridview.qml110
-rw-r--r--doc/src/snippets/declarative/listmodel-modify.qml97
-rw-r--r--doc/src/snippets/declarative/listmodel-nested.qml103
-rw-r--r--doc/src/snippets/declarative/listmodel-simple.qml80
-rw-r--r--doc/src/snippets/declarative/listmodel.qml60
-rw-r--r--doc/src/snippets/declarative/listview/highlight.qml104
-rw-r--r--doc/src/snippets/declarative/mousearea.qml119
-rw-r--r--doc/src/snippets/declarative/parentchange.qml69
-rw-r--r--doc/src/snippets/declarative/pathview/ContactModel.qml (renamed from doc/src/snippets/declarative/pathview/dummydata/MenuModel.qml)9
-rw-r--r--doc/src/snippets/declarative/pathview/pathattributes.qml13
-rw-r--r--doc/src/snippets/declarative/pathview/pathview.qml22
-rw-r--r--doc/src/snippets/declarative/pathview/pics/qtlogo.png (renamed from doc/src/snippets/declarative/pathview/pics/qtlogo-64.png)bin2991 -> 2991 bytes
-rw-r--r--doc/src/snippets/declarative/repeater.qml53
-rw-r--r--doc/src/snippets/declarative/rotation.qml56
-rw-r--r--doc/src/snippets/declarative/state.qml (renamed from doc/src/snippets/declarative/mouseregion.qml)40
-rw-r--r--doc/src/snippets/declarative/states.qml81
-rw-r--r--doc/src/snippets/declarative/systempalette.qml (renamed from doc/src/snippets/declarative/repeater-index.qml)19
-rw-r--r--doc/src/snippets/declarative/visualdatamodel.qml (renamed from doc/src/snippets/declarative/drag.qml)32
-rw-r--r--doc/src/snippets/declarative/visualdatamodel_rootindex/main.cpp63
-rw-r--r--doc/src/snippets/declarative/visualdatamodel_rootindex/view.qml66
-rw-r--r--doc/src/snippets/declarative/visualdatamodel_rootindex/visualdatamodel_rootindex.pro4
-rw-r--r--doc/src/snippets/qxmlschema/main.cpp5
-rw-r--r--doc/src/template/images/arrow_down.pngbin0 -> 177 bytes
-rw-r--r--doc/src/template/images/bg_ll_blank.pngbin0 -> 320 bytes
-rw-r--r--doc/src/template/images/bg_ul_blank.pngbin0 -> 304 bytes
-rw-r--r--doc/src/template/images/header_bg.pngbin0 -> 114 bytes
-rw-r--r--doc/src/template/scripts/narrow.js78
-rw-r--r--doc/src/template/scripts/superfish.js121
-rw-r--r--doc/src/template/style/OfflineStyle.css819
-rw-r--r--doc/src/template/style/narrow.css250
-rw-r--r--doc/src/template/style/superfish.css51
-rw-r--r--doc/src/template/style/superfish_skin.css83
-rw-r--r--examples/declarative/imageelements/image/ImageCell.qml60
-rw-r--r--examples/declarative/imageelements/image/face-smile.pngbin0 -> 15408 bytes
-rw-r--r--examples/declarative/imageelements/image/image.qml66
-rw-r--r--examples/declarative/imageelements/image/image.qmlproject16
-rw-r--r--examples/declarative/modelviews/listview/content/pics/add.pngbin1577 -> 0 bytes
-rw-r--r--examples/declarative/modelviews/listview/content/pics/del.pngbin1661 -> 0 bytes
-rw-r--r--examples/declarative/modelviews/listview/content/pics/trash.pngbin989 -> 0 bytes
-rw-r--r--examples/declarative/modelviews/listview/dynamiclist.qml (renamed from examples/declarative/modelviews/listview/dynamic.qml)33
-rw-r--r--examples/declarative/modelviews/listview/expandingdelegates.qml (renamed from examples/declarative/modelviews/listview/recipes.qml)0
-rw-r--r--examples/declarative/modelviews/listview/highlightranges.qml (renamed from examples/declarative/modelviews/listview/listview-example.qml)0
-rw-r--r--examples/declarative/modelviews/visualitemmodel/visualitemmodel.qml (renamed from examples/declarative/modelviews/listview/itemlist.qml)0
-rw-r--r--examples/declarative/modelviews/visualitemmodel/visualitemmodel.qmlproject16
-rw-r--r--examples/declarative/text/edit/edit.qml3
-rw-r--r--examples/declarative/toys/corkboards/Day.qml7
-rw-r--r--examples/declarative/toys/dynamicscene/dynamicscene.qml7
-rw-r--r--examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml12
-rw-r--r--examples/declarative/ui-components/searchbox/SearchBox.qml4
-rw-r--r--examples/declarative/ui-components/searchbox/main.qml5
-rw-r--r--mkspecs/common/qws.conf4
-rw-r--r--mkspecs/common/symbian/symbian-makefile.conf1
-rw-r--r--mkspecs/common/symbian/symbian-mmp.conf20
-rw-r--r--mkspecs/common/symbian/symbian.conf5
-rw-r--r--mkspecs/features/qttest_p4.prf36
-rw-r--r--mkspecs/features/sis_targets.prf15
-rw-r--r--mkspecs/features/symbian/def_files.prf5
-rw-r--r--mkspecs/features/symbian/def_files_disabled.prf2
-rw-r--r--mkspecs/features/symbian/platform_paths.prf20
-rw-r--r--mkspecs/features/symbian/run_on_phone.prf32
-rw-r--r--mkspecs/features/symbian/symbian_building.prf3
-rw-r--r--mkspecs/features/testcase.prf65
-rw-r--r--mkspecs/linux-g++-maemo/qmake.conf3
-rw-r--r--mkspecs/modules/qt_webkit_version.pri2
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp6
-rw-r--r--qmake/generators/symbian/symbian_makefile.h2
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp38
-rw-r--r--qmake/generators/symbian/symbiancommon.h2
-rw-r--r--qmake/generators/symbian/symmake.cpp49
-rw-r--r--qmake/generators/symbian/symmake.h3
-rw-r--r--qmake/generators/symbian/symmake_abld.cpp2
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.cpp2
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp6
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp8
-rw-r--r--src/3rdparty/phonon/mmf/abstractaudioeffect.cpp2
-rw-r--r--src/3rdparty/phonon/mmf/abstractaudioeffect.h4
-rw-r--r--src/3rdparty/phonon/mmf/audiooutput.cpp3
-rw-r--r--src/3rdparty/phonon/mmf/bassboost.cpp1
-rw-r--r--src/3rdparty/phonon/mmf/effectfactory.cpp5
-rw-r--r--src/3rdparty/phonon/mmf/loudness.cpp1
-rw-r--r--src/3rdparty/webkit/.tag2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/ChangeLog15
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h4
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog338
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.gypi2
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pri16
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro48
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.h3
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.h1
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.h1
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/NetworkStateNotifier.h9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/FileSystemQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.mm (renamed from src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp)5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp24
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog116
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc427
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_bridge_snippets.cpp177
-rw-r--r--src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri (renamed from src/3rdparty/webkit/WebKit/qt/qtwebkit_version.pri)0
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp17
-rw-r--r--src/corelib/global/qconfig-medium.h3
-rw-r--r--src/corelib/global/qconfig-minimal.h3
-rw-r--r--src/corelib/global/qconfig-small.h3
-rw-r--r--src/corelib/global/qfeatures.h3
-rw-r--r--src/corelib/global/qfeatures.txt6
-rw-r--r--src/corelib/global/qnamespace.h24
-rw-r--r--src/corelib/global/qnamespace.qdoc31
-rw-r--r--src/corelib/io/qresource.cpp2
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp92
-rw-r--r--src/corelib/kernel/qcoreevent.h8
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp4
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp4
-rw-r--r--src/corelib/kernel/qeventloop.cpp4
-rw-r--r--src/corelib/kernel/qmetatype.cpp2
-rw-r--r--src/corelib/kernel/qtranslator.cpp2
-rw-r--r--src/corelib/tools/qelapsedtimer.cpp2
-rw-r--r--src/corelib/tools/qhash.h9
-rw-r--r--src/corelib/tools/qlocale.cpp19
-rw-r--r--src/corelib/tools/qlocale.h2
-rw-r--r--src/corelib/tools/qmap.h9
-rw-r--r--src/corelib/tools/qstring.cpp33
-rw-r--r--src/corelib/tools/qstring.h2
-rw-r--r--src/corelib/tools/qvarlengtharray.h7
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc49
-rw-r--r--src/declarative/3rdparty/3rdparty.pri7
-rw-r--r--src/declarative/QmlChanges.txt3
-rw-r--r--src/declarative/debugger/qdeclarativedebugtrace_p.h2
-rw-r--r--src/declarative/declarative.pro1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors.cpp48
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp32
-rw-r--r--src/declarative/graphicsitems/qdeclarativeborderimage.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp8
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflipable.cpp10
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview.cpp475
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview_p.h11
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp9
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp72
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem_p.h7
-rw-r--r--src/declarative/graphicsitems/qdeclarativelayoutitem.cpp5
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp129
-rw-r--r--src/declarative/graphicsitems/qdeclarativeloader.cpp76
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea.cpp65
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea_p_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativepath.cpp7
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview.cpp20
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners.cpp123
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners_p_p.h16
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativerepeater.cpp94
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp20
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp172
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p.h8
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p_p.h12
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp180
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p.h7
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p_p.h11
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp114
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h5
-rw-r--r--src/declarative/qml/parser/qdeclarativejslexer.cpp2
-rw-r--r--src/declarative/qml/qdeclarative.h2
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp14
-rw-r--r--src/declarative/qml/qdeclarativecontext.cpp2
-rw-r--r--src/declarative/qml/qdeclarativecontext_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp11
-rw-r--r--src/declarative/qml/qdeclarativeimport.cpp4
-rw-r--r--src/declarative/qml/qdeclarativeinstruction_p.h2
-rw-r--r--src/declarative/qml/qdeclarativepropertycache_p.h2
-rw-r--r--src/declarative/qml/qdeclarativevaluetype.cpp12
-rw-r--r--src/declarative/qml/qdeclarativevaluetype_p.h4
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp11
-rw-r--r--src/declarative/util/qdeclarativeanimation.cpp117
-rw-r--r--src/declarative/util/qdeclarativeanimation_p.h2
-rw-r--r--src/declarative/util/qdeclarativeanimation_p_p.h20
-rw-r--r--src/declarative/util/qdeclarativeconnections.cpp29
-rw-r--r--src/declarative/util/qdeclarativefontloader.cpp52
-rw-r--r--src/declarative/util/qdeclarativelistmodel.cpp128
-rw-r--r--src/declarative/util/qdeclarativepackage.cpp15
-rw-r--r--src/declarative/util/qdeclarativepackage_p.h8
-rw-r--r--src/declarative/util/qdeclarativepropertychanges.cpp8
-rw-r--r--src/declarative/util/qdeclarativesmoothedanimation.cpp2
-rw-r--r--src/declarative/util/qdeclarativesmoothedanimation_p_p.h2
-rw-r--r--src/declarative/util/qdeclarativestate.cpp42
-rw-r--r--src/declarative/util/qdeclarativestate_p.h3
-rw-r--r--src/declarative/util/qdeclarativestate_p_p.h3
-rw-r--r--src/declarative/util/qdeclarativestategroup.cpp8
-rw-r--r--src/declarative/util/qdeclarativestateoperations.cpp42
-rw-r--r--src/declarative/util/qdeclarativesystempalette.cpp42
-rw-r--r--src/declarative/util/qdeclarativetimeline_p_p.h8
-rw-r--r--src/declarative/util/qdeclarativetimer.cpp23
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager_p_p.h2
-rw-r--r--src/declarative/util/qdeclarativeview.cpp20
-rw-r--r--src/declarative/util/qdeclarativeview.h1
-rw-r--r--src/declarative/util/qdeclarativexmllistmodel.cpp10
-rw-r--r--src/declarative/util/qlistmodelinterface.cpp (renamed from src/declarative/3rdparty/qlistmodelinterface.cpp)0
-rw-r--r--src/declarative/util/qlistmodelinterface_p.h (renamed from src/declarative/3rdparty/qlistmodelinterface_p.h)0
-rw-r--r--src/declarative/util/util.pri6
-rw-r--r--src/gui/embedded/qwsmanager_qws.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp31
-rw-r--r--src/gui/graphicsview/qgraphicsitem.h4
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h2
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp13
-rw-r--r--src/gui/graphicsview/qgraphicsscene.h2
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h2
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp4
-rw-r--r--src/gui/image/qiconloader.cpp16
-rw-r--r--src/gui/image/qimage.cpp2
-rw-r--r--src/gui/image/qpixmap.cpp11
-rw-r--r--src/gui/image/qpixmapcache.cpp29
-rw-r--r--src/gui/inputmethod/qximinputcontext_x11.cpp14
-rw-r--r--src/gui/kernel/qapplication.cpp30
-rw-r--r--src/gui/kernel/qapplication.h2
-rw-r--r--src/gui/kernel/qapplication_p.h9
-rw-r--r--src/gui/kernel/qapplication_s60.cpp27
-rw-r--r--src/gui/kernel/qapplication_win.cpp17
-rw-r--r--src/gui/kernel/qapplication_x11.cpp2
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm10
-rw-r--r--src/gui/kernel/qevent.cpp5
-rw-r--r--src/gui/kernel/qevent.h4
-rw-r--r--src/gui/kernel/qevent_p.h3
-rw-r--r--src/gui/kernel/qeventdispatcher_mac.mm2
-rw-r--r--src/gui/kernel/qgesture.cpp4
-rw-r--r--src/gui/kernel/qgesture.h4
-rw-r--r--src/gui/kernel/qgesture_p.h4
-rw-r--r--src/gui/kernel/qgesturemanager.cpp5
-rw-r--r--src/gui/kernel/qgesturemanager_p.h4
-rw-r--r--src/gui/kernel/qgesturerecognizer.cpp4
-rw-r--r--src/gui/kernel/qgesturerecognizer.h4
-rw-r--r--src/gui/kernel/qkeymapper_mac.cpp18
-rw-r--r--src/gui/kernel/qkeymapper_qws.cpp2
-rw-r--r--src/gui/kernel/qkeymapper_x11.cpp21
-rw-r--r--src/gui/kernel/qkeymapper_x11_p.cpp14
-rw-r--r--src/gui/kernel/qkeysequence.cpp30
-rw-r--r--src/gui/kernel/qmacgesturerecognizer_mac.mm4
-rw-r--r--src/gui/kernel/qmacgesturerecognizer_mac_p.h4
-rw-r--r--src/gui/kernel/qstandardgestures.cpp4
-rw-r--r--src/gui/kernel/qstandardgestures_p.h4
-rw-r--r--src/gui/kernel/qwhatsthis.cpp2
-rw-r--r--src/gui/kernel/qwidget.cpp146
-rw-r--r--src/gui/kernel/qwidget.h4
-rw-r--r--src/gui/kernel/qwidget_mac.mm13
-rw-r--r--src/gui/kernel/qwidget_p.h63
-rw-r--r--src/gui/kernel/qwidget_qws.cpp2
-rw-r--r--src/gui/kernel/qwidget_s60.cpp11
-rw-r--r--src/gui/kernel/qwidget_win.cpp3
-rw-r--r--src/gui/kernel/qwidget_x11.cpp1
-rw-r--r--src/gui/kernel/qwinnativepangesturerecognizer_win.cpp4
-rw-r--r--src/gui/kernel/qwinnativepangesturerecognizer_win_p.h5
-rw-r--r--src/gui/painting/qbackingstore.cpp6
-rw-r--r--src/gui/painting/qbrush.cpp7
-rw-r--r--src/gui/painting/qdrawutil.cpp5
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp105
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp7
-rw-r--r--src/gui/painting/qpainter.cpp60
-rw-r--r--src/gui/painting/qtransform.cpp2
-rw-r--r--src/gui/statemachine/qguistatemachine.cpp2
-rw-r--r--src/gui/styles/qgtkpainter.cpp51
-rw-r--r--src/gui/styles/qgtkstyle.cpp58
-rw-r--r--src/gui/styles/qplastiquestyle.cpp37
-rw-r--r--src/gui/styles/qs60style.cpp21
-rw-r--r--src/gui/styles/qs60style_p.h48
-rw-r--r--src/gui/styles/qs60style_s60.cpp60
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp2
-rw-r--r--src/gui/styles/qwindowsstyle.cpp5
-rw-r--r--src/gui/text/qfontdatabase_s60.cpp76
-rw-r--r--src/gui/text/qfontengine_ft.cpp15
-rw-r--r--src/gui/text/qfontengine_ft_p.h1
-rw-r--r--src/gui/text/qfontengine_s60.cpp172
-rw-r--r--src/gui/text/qfontengine_s60_p.h25
-rw-r--r--src/gui/text/qfontmetrics.cpp25
-rw-r--r--src/gui/text/qfontmetrics.h1
-rw-r--r--src/gui/text/qstatictext.cpp37
-rw-r--r--src/gui/text/qstatictext_p.h7
-rw-r--r--src/gui/text/qtextcursor.cpp92
-rw-r--r--src/gui/text/qtextcursor.h6
-rw-r--r--src/gui/text/qtextcursor_p.h3
-rw-r--r--src/gui/text/qtextdocument.cpp9
-rw-r--r--src/gui/text/qtextdocument_p.cpp19
-rw-r--r--src/gui/text/qtextdocument_p.h2
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp66
-rw-r--r--src/gui/text/qtextengine.cpp34
-rw-r--r--src/gui/text/qtextengine_p.h2
-rw-r--r--src/gui/text/qtextformat.cpp7
-rw-r--r--src/gui/text/qtextlayout.cpp10
-rw-r--r--src/gui/text/qtextlist.cpp2
-rw-r--r--src/gui/text/qtextobject.cpp43
-rw-r--r--src/gui/text/qtextobject.h2
-rw-r--r--src/gui/text/qtextoption.cpp2
-rw-r--r--src/gui/text/qtextoption.h4
-rw-r--r--src/gui/text/text.pri1
-rw-r--r--src/gui/widgets/qabstractscrollarea.cpp8
-rw-r--r--src/gui/widgets/qlinecontrol_p.h11
-rw-r--r--src/gui/widgets/qlineedit.cpp5
-rw-r--r--src/gui/widgets/qplaintextedit.cpp2
-rw-r--r--src/gui/widgets/qprogressbar.h6
-rw-r--r--src/gui/widgets/qstackedwidget.cpp8
-rw-r--r--src/imports/gestures/plugin.cpp3
-rw-r--r--src/imports/gestures/qdeclarativegesturearea.cpp4
-rw-r--r--src/imports/gestures/qdeclarativegesturearea_p.h4
-rw-r--r--src/imports/particles/qdeclarativeparticles.cpp26
-rw-r--r--src/imports/qimportbase.pri3
-rw-r--r--src/imports/webkit/qdeclarativewebview.cpp7
-rw-r--r--src/imports/webkit/qdeclarativewebview_p.h4
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp9
-rw-r--r--src/network/access/qnetworkcookie.cpp2
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp6
-rw-r--r--src/network/kernel/qnetworkproxy.cpp32
-rw-r--r--src/network/ssl/qsslcertificate.cpp23
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp33
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h3
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp5
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h1
-rw-r--r--src/opengl/qgl.cpp75
-rw-r--r--src/opengl/qgl.h4
-rw-r--r--src/opengl/qgl_egl.cpp5
-rw-r--r--src/opengl/qgl_p.h40
-rw-r--r--src/opengl/qgl_x11.cpp376
-rw-r--r--src/opengl/qglframebufferobject.cpp30
-rw-r--r--src/opengl/qglframebufferobject.h2
-rw-r--r--src/openvg/qpaintengine_vg.cpp45
-rw-r--r--src/plugins/bearer/symbian/symbianengine.cpp4
-rw-r--r--src/plugins/s60/s60pluginbase.pri17
-rw-r--r--src/qbase.pri2
-rw-r--r--src/s60installs/bwins/QtDeclarativeu.def38
-rw-r--r--src/s60installs/bwins/QtGuiu.def8
-rw-r--r--src/s60installs/eabi/QtDeclarativeu.def39
-rw-r--r--src/s60installs/eabi/QtGuiu.def6
-rw-r--r--src/s60installs/qt.iby15
-rw-r--r--src/s60installs/qt.svg106
-rw-r--r--src/s60installs/s60installs.pro74
-rw-r--r--src/script/api/qscriptengine.cpp4
-rw-r--r--src/script/parser/qscriptlexer.cpp2
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp4
-rw-r--r--src/src.pro2
-rw-r--r--src/svg/qgraphicssvgitem.cpp6
-rw-r--r--src/xmlpatterns/data/qdecimal_p.h2
-rw-r--r--tests/auto/declarative/declarative.pro2
-rw-r--r--tests/auto/declarative/examples/examples.pro3
-rw-r--r--tests/auto/declarative/examples/tst_examples.cpp6
-rw-r--r--tests/auto/declarative/parserstress/parserstress.pro3
-rw-r--r--tests/auto/declarative/parserstress/tst_parserstress.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro3
-rw-r--r--tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro4
-rw-r--r--tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro4
-rw-r--r--tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro4
-rw-r--r--tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro3
-rw-r--r--tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro8
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro5
-rw-r--r--tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeerror/tst_qdeclarativeerror.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro3
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro4
-rw-r--r--tests/auto/declarative/qdeclarativefolderlistmodel/tst_qdeclarativefolderlistmodel.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro4
-rw-r--r--tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro4
-rw-r--r--tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp25
-rw-r--r--tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeinfo/tst_qdeclarativeinfo.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeitem/data/childrenRectBug.qml23
-rw-r--r--tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp22
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro3
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro6
-rw-r--r--tests/auto/declarative/qdeclarativelayoutitem/tst_qdeclarativelayoutitem.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro4
-rw-r--r--tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro4
-rw-r--r--tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp13
-rw-r--r--tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro4
-rw-r--r--tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro4
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro4
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro4
-rw-r--r--tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro3
-rw-r--r--tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro4
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro4
-rw-r--r--tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro4
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro4
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro4
-rw-r--r--tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro4
-rw-r--r--tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/attachedPropertyChanges.qml20
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/returnToBase.qml21
-rw-r--r--tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro4
-rw-r--r--tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp68
-rw-r--r--tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro5
-rw-r--r--tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro3
-rw-r--r--tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro4
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp156
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro4
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp155
-rw-r--r--tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro4
-rw-r--r--tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro3
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp11
-rw-r--r--tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeview/tst_qdeclarativeview.cpp10
-rw-r--r--tests/auto/declarative/qdeclarativeviewer/data/orientation.qml17
-rw-r--r--tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro3
-rw-r--r--tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp216
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro3
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro4
-rw-r--r--tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro4
-rw-r--r--tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro4
-rw-r--r--tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro3
-rw-r--r--tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp5
-rw-r--r--tests/auto/declarative/qmlvisual/qmlvisual.pro4
-rw-r--r--tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp5
-rw-r--r--tests/auto/gestures/tst_gestures.cpp166
-rw-r--r--tests/auto/linguist/lconvert/data/test20.ts12
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/cmdline_order/a.h42
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/cmdline_order/b.h (renamed from doc/src/snippets/declarative/repeater-modeldata.qml)14
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/cmdline_order/lupdatecmd1
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/cmdline_order/project.ts.result20
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/lacksqobject/expectedoutput.txt4
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt4
-rw-r--r--tests/auto/maketestselftest/checktest/checktest.pro7
-rw-r--r--tests/auto/maketestselftest/checktest/main.cpp99
-rw-r--r--tests/auto/maketestselftest/maketestselftest.pro9
-rw-r--r--tests/auto/maketestselftest/test/test.pro18
-rw-r--r--tests/auto/maketestselftest/tst_maketestselftest.cpp79
-rw-r--r--tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp2
-rw-r--r--tests/auto/qfontmetrics/tst_qfontmetrics.cpp28
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp1
-rw-r--r--tests/auto/qhash/tst_qhash.cpp20
-rw-r--r--tests/auto/qmap/tst_qmap.cpp20
-rw-r--r--tests/auto/qmetatype/tst_qmetatype.cpp8
-rw-r--r--tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp6
-rw-r--r--tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp77
-rw-r--r--tests/auto/qsslcertificate/more-certificates/cert-large-serial-number.pem14
-rw-r--r--tests/auto/qsslcertificate/tst_qsslcertificate.cpp13
-rw-r--r--tests/auto/qstatictext/tst_qstatictext.cpp7
-rw-r--r--tests/auto/qstring/tst_qstring.cpp33
-rw-r--r--tests/auto/qtextcursor/tst_qtextcursor.cpp26
-rw-r--r--tests/auto/qtransform/tst_qtransform.cpp8
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp355
-rw-r--r--tools/linguist/lconvert/main.cpp8
-rw-r--r--tools/linguist/lrelease/main.cpp23
-rw-r--r--tools/linguist/lupdate/cpp.cpp124
-rw-r--r--tools/linguist/lupdate/java.cpp40
-rw-r--r--tools/linguist/lupdate/main.cpp91
-rw-r--r--tools/linguist/lupdate/qscript.cpp22
-rw-r--r--tools/linguist/lupdate/qscript.g24
-rw-r--r--tools/linguist/phrasebooks/hungarian.qph752
-rw-r--r--tools/linguist/phrasebooks/russian.qph2
-rw-r--r--tools/linguist/shared/po.cpp83
-rw-r--r--tools/linguist/shared/profileevaluator.cpp6
-rw-r--r--tools/linguist/shared/qm.cpp4
-rw-r--r--tools/linguist/shared/translator.cpp23
-rw-r--r--tools/linguist/shared/translator.h2
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp4773
-rw-r--r--tools/qdoc3/ditaxmlgenerator.h358
-rw-r--r--tools/qdoc3/htmlgenerator.cpp134
-rw-r--r--tools/qdoc3/node.cpp6
-rw-r--r--tools/qdoc3/pagegenerator.cpp106
-rw-r--r--tools/qdoc3/pagegenerator.h11
-rw-r--r--tools/qdoc3/qdoc3.pro2
-rw-r--r--tools/qdoc3/test/assistant.qdocconf2
-rw-r--r--tools/qdoc3/test/designer.qdocconf2
-rw-r--r--tools/qdoc3/test/images/bg_l.pngbin0 -> 100 bytes
-rw-r--r--tools/qdoc3/test/images/bg_l_blank.pngbin0 -> 84 bytes
-rw-r--r--tools/qdoc3/test/images/bg_r.pngbin0 -> 96 bytes
-rw-r--r--tools/qdoc3/test/images/box_bg.pngbin0 -> 89 bytes
-rw-r--r--tools/qdoc3/test/images/breadcrumb.pngbin0 -> 134 bytes
-rw-r--r--tools/qdoc3/test/images/bullet_dn.pngbin0 -> 230 bytes
-rw-r--r--tools/qdoc3/test/images/bullet_gt.pngbin0 -> 124 bytes
-rw-r--r--tools/qdoc3/test/images/bullet_sq.pngbin0 -> 74 bytes
-rw-r--r--tools/qdoc3/test/images/bullet_up.pngbin0 -> 253 bytes
-rw-r--r--tools/qdoc3/test/images/feedbackground.pngbin0 -> 263 bytes
-rw-r--r--tools/qdoc3/test/images/horBar.pngbin0 -> 2807 bytes
-rw-r--r--tools/qdoc3/test/images/page.pngbin0 -> 3102 bytes
-rw-r--r--tools/qdoc3/test/images/page_bg.pngbin0 -> 84 bytes
-rw-r--r--tools/qdoc3/test/images/sprites-combined.pngbin0 -> 62534 bytes
-rw-r--r--tools/qdoc3/test/linguist.qdocconf4
-rw-r--r--tools/qdoc3/test/qdeclarative.qdocconf2
-rw-r--r--tools/qdoc3/test/qmake.qdocconf2
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf2
-rw-r--r--tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf1
-rw-r--r--tools/qdoc3/test/qt-defines.qdocconf53
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf55
-rw-r--r--tools/qdoc3/test/qt.qdocconf17
-rw-r--r--tools/qml/content/Browser.qml2
-rw-r--r--tools/qml/deviceorientation.h9
-rw-r--r--tools/qml/deviceorientation_maemo.cpp4
-rw-r--r--tools/qml/qmlruntime.cpp94
-rw-r--r--tools/qml/qmlruntime.h9
-rw-r--r--translations/assistant_hu.ts693
-rw-r--r--translations/assistant_ru.ts526
-rw-r--r--translations/designer_hu.ts3020
-rw-r--r--translations/designer_ru.ts206
-rw-r--r--translations/linguist_hu.ts1012
-rw-r--r--translations/linguist_ru.ts95
-rw-r--r--translations/qt_help_hu.ts237
-rw-r--r--translations/qt_help_ru.ts180
-rw-r--r--translations/qt_hu.ts8426
-rw-r--r--translations/qt_ru.ts4476
-rw-r--r--translations/qtconfig_hu.ts627
-rw-r--r--translations/qtconfig_ru.ts26
-rw-r--r--translations/qvfb_hu.ts175
-rw-r--r--util/s60theme/main.cpp4
-rw-r--r--util/s60theme/s60themeconvert.cpp25
662 files changed, 30515 insertions, 10770 deletions
diff --git a/.gitignore b/.gitignore
index 4e3b130..d88e69a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -205,7 +205,7 @@ bld.inf
*.loc
!s60main.rss
*.pkg
-plugin_commonU.def
+plugin_commonu.def
*.qtplugin
*.sis
*.sisx
diff --git a/configure b/configure
index 0111f51..89cd97d 100755
--- a/configure
+++ b/configure
@@ -2201,9 +2201,11 @@ minimal|small|medium|large|full)
;;
*)
# not known to be sufficient for anything
- if [ '!' -f "$relpath/src/corelib/global/qconfig-${CFG_QCONFIG}.h" ]; then
+ if [ '!' -f "$relpath/src/corelib/global/qconfig-${CFG_QCONFIG}.h" ] && [ '!' -f `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"` ]; then
echo >&2 "Error: configuration file not found:"
echo >&2 " $relpath/src/corelib/global/qconfig-${CFG_QCONFIG}.h"
+ echo >&2 " or"
+ echo >&2 " `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"`"
OPT_HELP=yes
fi
esac
@@ -3201,15 +3203,25 @@ fi
#prefix
if [ -z "$QT_INSTALL_PREFIX" ]; then
- if [ "$CFG_DEV" = "yes" ]; then
- QT_INSTALL_PREFIX="$outpath" # In Development, we use sandboxed builds by default
- elif [ "$PLATFORM_QWS" = "yes" ]; then
- QT_INSTALL_PREFIX="/usr/local/Trolltech/QtEmbedded-${QT_VERSION}"
- if [ "$PLATFORM" != "$XPLATFORM" ]; then
- QT_INSTALL_PREFIX="${QT_INSTALL_PREFIX}-${CFG_ARCH}"
+ if [ -d "$EPOCROOT" ]; then
+ case "$XPLATFORM" in *symbian*)
+ QT_INSTALL_PREFIX="$EPOCROOT/epoc32/"
+ QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/"
+ ;;
+ esac
+ fi
+
+ if [ -z "$QT_INSTALL_PREFIX" ]; then # still empty
+ if [ "$CFG_DEV" = "yes" ]; then
+ QT_INSTALL_PREFIX="$outpath" # In Development, we use sandboxed builds by default
+ elif [ "$PLATFORM_QWS" = "yes" ]; then
+ QT_INSTALL_PREFIX="/usr/local/Trolltech/QtEmbedded-${QT_VERSION}"
+ if [ "$PLATFORM" != "$XPLATFORM" ]; then
+ QT_INSTALL_PREFIX="${QT_INSTALL_PREFIX}-${CFG_ARCH}"
+ fi
+ else
+ QT_INSTALL_PREFIX="/usr/local/Trolltech/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Trolltech/Qt-$QT_VERSION
fi
- else
- QT_INSTALL_PREFIX="/usr/local/Trolltech/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Trolltech/Qt-$QT_VERSION
fi
fi
QT_INSTALL_PREFIX=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_PREFIX"`
@@ -7229,7 +7241,11 @@ full)
*)
tmpconfig="$outpath/src/corelib/global/qconfig.h.new"
echo "#ifndef QT_BOOTSTRAPPED" >"$tmpconfig"
- cat "$relpath/src/corelib/global/qconfig-$CFG_QCONFIG.h" >>"$tmpconfig"
+ if [ -f "$relpath/src/corelib/global/qconfig-$CFG_QCONFIG.h" ]; then
+ cat "$relpath/src/corelib/global/qconfig-$CFG_QCONFIG.h" >>"$tmpconfig"
+ elif [ -f `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"` ]; then
+ cat `"$relpath/config.tests/unix/makeabs" "${CFG_QCONFIG}"` >>"$tmpconfig"
+ fi
echo "#endif" >>"$tmpconfig"
;;
esac
@@ -7509,6 +7525,10 @@ then
fi
if [ -n "$QCONFIG_FLAGS" ]; then
+cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
+#ifndef QT_BOOTSTRAPPED
+
+EOF
for cfg in $QCONFIG_FLAGS; do
cfgd=`echo $cfg | sed 's/=.*$//'` # trim pushed 'Foo=Bar' defines
cfg=`echo $cfg | sed 's/=/ /'` # turn first '=' into a space
@@ -7541,6 +7561,10 @@ cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
EOF
fi
done
+cat >>"$outpath/src/corelib/global/qconfig.h.new" << EOF
+#endif // QT_BOOTSTRAPPED
+
+EOF
fi
if [ "$CFG_REDUCE_EXPORTS" = "yes" ]; then
@@ -8025,7 +8049,7 @@ if [ "$CFG_OPENSSL" = "linked" ] && [ "$OPENSSL_LIBS" = "" ]; then
echo "NOTE: When linking against OpenSSL, you can override the default"
echo "library names through OPENSSL_LIBS."
echo "For example:"
- echo " ./configure -openssl-linked OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto'"
+ echo " OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked"
echo
fi
if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_FRAMEWORK" = "yes" ] && [ "$CFG_DEBUG" = "yes" ] && [ "$CFG_DEBUG_RELEASE" = "no" ]; then
diff --git a/demos/declarative/flickr/mobile/TitleBar.qml b/demos/declarative/flickr/mobile/TitleBar.qml
index da144d4..c7e1a53 100644
--- a/demos/declarative/flickr/mobile/TitleBar.qml
+++ b/demos/declarative/flickr/mobile/TitleBar.qml
@@ -118,7 +118,7 @@ Item {
name: "Tags"
PropertyChanges { target: container; x: -tagButton.x + 5 }
PropertyChanges { target: tagButton; text: "OK" }
- PropertyChanges { target: lineEdit; focus: true }
+ PropertyChanges { target: editor; focus: true }
}
transitions: Transition {
diff --git a/demos/declarative/photoviewer/PhotoViewerCore/EditableButton.qml b/demos/declarative/photoviewer/PhotoViewerCore/EditableButton.qml
index e15adbc..6109535 100644
--- a/demos/declarative/photoviewer/PhotoViewerCore/EditableButton.qml
+++ b/demos/declarative/photoviewer/PhotoViewerCore/EditableButton.qml
@@ -77,6 +77,6 @@ Item {
MouseArea {
anchors { fill: parent; leftMargin: -20; topMargin: -20; rightMargin: -20; bottomMargin: -20 }
- onClicked: textInput.forceFocus()
+ onClicked: { textInput.forceFocus(); textInput.openSoftwareInputPanel(); }
}
}
diff --git a/demos/declarative/samegame/SamegameCore/Dialog.qml b/demos/declarative/samegame/SamegameCore/Dialog.qml
index 8dd12f6..c71a4b3 100644
--- a/demos/declarative/samegame/SamegameCore/Dialog.qml
+++ b/demos/declarative/samegame/SamegameCore/Dialog.qml
@@ -47,13 +47,14 @@ Rectangle {
property Item text: dialogText
signal closed
-
+ signal opened
function forceClose() {
page.closed();
page.opacity = 0;
}
function show(txt) {
+ page.opened();
dialogText.text = txt;
page.opacity = 1;
}
@@ -62,7 +63,7 @@ Rectangle {
color: "white"
border.width: 1
opacity: 0
-
+ visible: opacity > 0
Behavior on opacity {
NumberAnimation { duration: 1000 }
}
diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml
index 54c18d6..9a721da 100644
--- a/demos/declarative/samegame/samegame.qml
+++ b/demos/declarative/samegame/samegame.qml
@@ -90,17 +90,31 @@ Rectangle {
enabled: initialWidth != 0
}
+ onOpened: nameInputText.focus = true;
+ onClosed: {
+ nameInputText.focus = false;
+ if (nameInputText.text != "")
+ Logic.saveHighScore(nameInputText.text);
+ }
Text {
id: dialogText
anchors { left: nameInputDialog.left; leftMargin: 20; verticalCenter: parent.verticalCenter }
text: "You won! Please enter your name: "
}
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ if (nameInputText.text == "")
+ nameInputText.openSoftwareInputPanel();
+ else
+ nameInputDialog.forceClose();
+ }
+ }
TextInput {
id: nameInputText
anchors { verticalCenter: parent.verticalCenter; left: dialogText.right }
- focus: true
-
+ focus: false
onTextChanged: {
var newWidth = nameInputText.width + dialogText.width + 40;
if ( (newWidth > nameInputDialog.width && newWidth < screen.width)
@@ -108,8 +122,6 @@ Rectangle {
nameInputDialog.width = newWidth;
}
onAccepted: {
- if (nameInputDialog.opacity == 1 && nameInputText.text != "")
- Logic.saveHighScore(nameInputText.text);
nameInputDialog.forceClose();
}
}
diff --git a/demos/declarative/snake/content/HighScoreModel.qml b/demos/declarative/snake/content/HighScoreModel.qml
index 99799c8..42482f8 100644
--- a/demos/declarative/snake/content/HighScoreModel.qml
+++ b/demos/declarative/snake/content/HighScoreModel.qml
@@ -106,7 +106,7 @@ ListModel {
}
if (rs.rows.length > maxScores)
tx.executeSql("DELETE FROM HighScores WHERE game=? AND score <= ?",
- [rs.rows.item(maxScores).score]);
+ [game, rs.rows.item(maxScores).score]);
}
}
)
diff --git a/demos/declarative/snake/content/snake.js b/demos/declarative/snake/content/snake.js
index 6f78b33..4d05e33 100644
--- a/demos/declarative/snake/content/snake.js
+++ b/demos/declarative/snake/content/snake.js
@@ -37,6 +37,7 @@ function startNewGame()
startNewGameTimer.running = true;
return;
}
+
numRows = numRowsAvailable;
numColumns = numColumnsAvailable;
board = new Array(numRows * numColumns);
diff --git a/demos/declarative/snake/snake.qml b/demos/declarative/snake/snake.qml
index 565e92c..46114f5 100644
--- a/demos/declarative/snake/snake.qml
+++ b/demos/declarative/snake/snake.qml
@@ -86,7 +86,7 @@ Rectangle {
onTriggered: { Logic.moveSkull() }
}
Timer {
-
+ id: startNewGameTimer;
interval: 700;
onTriggered: { Logic.startNewGame(); }
}
@@ -177,7 +177,6 @@ Rectangle {
id: progressIndicator
color: "#221edd";
width: 0;
- Behavior on width { NumberAnimation { duration: startHeartbeatTimer.running ? 1000 : 0}}
height: 30;
}
}
@@ -227,4 +226,13 @@ Rectangle {
}
]
+ transitions: [
+ Transition {
+ from: "*"
+ to: "starting"
+ NumberAnimation { target: progressIndicator; property: "width"; duration: 1000 }
+
+ }
+ ]
+
}
diff --git a/demos/declarative/twitter/TwitterCore/HomeTitleBar.qml b/demos/declarative/twitter/TwitterCore/HomeTitleBar.qml
index 3828a40..52164ed 100644
--- a/demos/declarative/twitter/TwitterCore/HomeTitleBar.qml
+++ b/demos/declarative/twitter/TwitterCore/HomeTitleBar.qml
@@ -148,7 +148,7 @@ Item {
PropertyChanges { target: tagButton; text: "OK" }
PropertyChanges { target: tagButton; width: 28 }
PropertyChanges { target: tagButton; height: 24 }
- PropertyChanges { target: txtEdit; focus: true }
+ PropertyChanges { target: editor; focus: true }
}
]
transitions: [
diff --git a/demos/declarative/twitter/TwitterCore/TitleBar.qml b/demos/declarative/twitter/TwitterCore/TitleBar.qml
index 0cf79a3..6cd0a50 100644
--- a/demos/declarative/twitter/TwitterCore/TitleBar.qml
+++ b/demos/declarative/twitter/TwitterCore/TitleBar.qml
@@ -107,7 +107,7 @@ Item {
name: "Tags"
PropertyChanges { target: container; x: -tagButton.x + 5 }
PropertyChanges { target: tagButton; text: "OK" }
- PropertyChanges { target: lineEdit; focus: true }
+ PropertyChanges { target: editor; focus: true }
}
transitions: Transition {
diff --git a/demos/declarative/twitter/twitter.qml b/demos/declarative/twitter/twitter.qml
index aa216cc..08cecb0 100644
--- a/demos/declarative/twitter/twitter.qml
+++ b/demos/declarative/twitter/twitter.qml
@@ -70,6 +70,11 @@ Item {
Image { source: "TwitterCore/images/stripes.png"; fillMode: Image.Tile; anchors.fill: parent; opacity: 0.3 }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: screen.focus = false;
+ }
+
Twitter.RssModel { id: rssModel }
Twitter.Loading { anchors.centerIn: parent; visible: rssModel.status==XmlListModel.Loading && state!='unauthed'}
Text {
diff --git a/demos/declarative/webbrowser/content/Button.qml b/demos/declarative/webbrowser/content/Button.qml
index 4642cc7..2a2e7ef 100644
--- a/demos/declarative/webbrowser/content/Button.qml
+++ b/demos/declarative/webbrowser/content/Button.qml
@@ -45,15 +45,21 @@ Item {
property alias image: icon.source
property variant action
+ signal clicked
+
width: 40; height: parent.height
Image {
id: icon; anchors.centerIn: parent
- opacity: if(action != undefined) {action.enabled ? 1.0 : 0.4} else 0
+ opacity: if (action != undefined) { action.enabled ? 1.0 : 0.4 } else 1
}
MouseArea {
anchors { fill: parent; topMargin: -10; bottomMargin: -10 }
- onClicked: action.trigger()
+ onClicked: {
+ if (action != undefined)
+ action.trigger()
+ parent.clicked()
+ }
}
}
diff --git a/demos/declarative/webbrowser/content/Header.qml b/demos/declarative/webbrowser/content/Header.qml
index 2c9d0fb..5abf440 100644
--- a/demos/declarative/webbrowser/content/Header.qml
+++ b/demos/declarative/webbrowser/content/Header.qml
@@ -42,7 +42,10 @@
import Qt 4.7
Image {
+ id: header
+
property alias editUrl: urlInput.url
+ property bool urlChanged: false
source: "pics/titlebar-bg.png"; fillMode: Image.TileHorizontally
@@ -91,19 +94,34 @@ Image {
onUrlEntered: {
webBrowser.urlString = url
webBrowser.focus = true
+ header.urlChanged = false
}
+ onUrlChanged: header.urlChanged = true
}
Button {
id: reloadButton
anchors { right: parent.right; rightMargin: 4 }
- action: webView.reload; image: "pics/view-refresh.png"; visible: webView.progress == 1.0
+ action: webView.reload; image: "pics/view-refresh.png"
+ visible: webView.progress == 1.0 && !header.urlChanged
}
Button {
id: stopButton
anchors { right: parent.right; rightMargin: 4 }
- action: webView.stop; image: "pics/edit-delete.png"; visible: webView.progress < 1.0
+ action: webView.stop; image: "pics/edit-delete.png"
+ visible: webView.progress < 1.0 && !header.urlChanged
+ }
+
+ Button {
+ id: goButton
+ anchors { right: parent.right; rightMargin: 4 }
+ onClicked: {
+ webBrowser.urlString = urlInput.url
+ webBrowser.focus = true
+ header.urlChanged = false
+ }
+ image: "pics/go-jump-locationbar.png"; visible: header.urlChanged
}
}
}
diff --git a/demos/declarative/webbrowser/content/UrlInput.qml b/demos/declarative/webbrowser/content/UrlInput.qml
index 9ea1904..9992456 100644
--- a/demos/declarative/webbrowser/content/UrlInput.qml
+++ b/demos/declarative/webbrowser/content/UrlInput.qml
@@ -48,6 +48,7 @@ Item {
property alias url: urlText.text
signal urlEntered(string url)
+ signal urlChanged
width: parent.height; height: parent.height
@@ -69,14 +70,24 @@ Item {
id: urlText
horizontalAlignment: TextEdit.AlignLeft
font.pixelSize: 14; focusOnPress: true
+
+ onTextChanged: container.urlChanged()
+
Keys.onEscapePressed: {
urlText.text = webView.url
webView.focus = true
}
+
+ Keys.onEnterPressed: {
+ container.urlEntered(urlText.text)
+ webView.focus = true
+ }
+
Keys.onReturnPressed: {
container.urlEntered(urlText.text)
webView.focus = true
}
+
anchors {
left: parent.left; right: parent.right; leftMargin: 18; rightMargin: 18
verticalCenter: parent.verticalCenter
diff --git a/demos/declarative/webbrowser/content/pics/go-jump-locationbar.png b/demos/declarative/webbrowser/content/pics/go-jump-locationbar.png
new file mode 100644
index 0000000..636fe38
--- /dev/null
+++ b/demos/declarative/webbrowser/content/pics/go-jump-locationbar.png
Binary files differ
diff --git a/demos/declarative/webbrowser/webbrowser.qml b/demos/declarative/webbrowser/webbrowser.qml
index a923c92..53ba6da 100644
--- a/demos/declarative/webbrowser/webbrowser.qml
+++ b/demos/declarative/webbrowser/webbrowser.qml
@@ -55,6 +55,7 @@ Rectangle {
FlickableWebView {
id: webView
url: webBrowser.urlString
+ onProgressChanged: header.urlChanged = false
anchors { top: headerSpace.bottom; left: parent.left; right: parent.right; bottom: parent.bottom }
}
diff --git a/demos/embedded/embedded.pro b/demos/embedded/embedded.pro
index da764d1..a3fc72b 100644
--- a/demos/embedded/embedded.pro
+++ b/demos/embedded/embedded.pro
@@ -19,6 +19,11 @@ contains(QT_CONFIG, webkit) {
SUBDIRS += anomaly
}
+contains(QT_CONFIG, declarative) {
+ # Qml demos require DEPLOYMENT support. Therefore, only symbian.
+ symbian:SUBDIRS += qmlcalculator qmlclocks qmldialcontrol qmleasing qmlflickr qmlphotoviewer qmltwitter
+}
+
# install
sources.files = README *.pro
sources.path = $$[QT_INSTALL_DEMOS]/embedded
diff --git a/demos/embedded/fluidlauncher/config_s60/config.xml b/demos/embedded/fluidlauncher/config_s60/config.xml
index d926a4b..4f10488 100644
--- a/demos/embedded/fluidlauncher/config_s60/config.xml
+++ b/demos/embedded/fluidlauncher/config_s60/config.xml
@@ -21,6 +21,13 @@
<example filename="digiflip" name="Flipping Clock" image="screenshots/digiflip.png"/>
<example filename="qmediaplayer" name="Media Player" image="screenshots/mediaplayer.png" args="-small-screen"/>
<example filename="spectrum" name="Spectrum Analyzer" image="screenshots/spectrum.png" args="-small-screen"/>
+ <example filename="qmlcalculator" name="Qml Calculator" image="screenshots/qmlcalculator.png"/>
+ <example filename="qmlclocks" name="Qml Clocks" image="screenshots/qmlclocks.png"/>
+ <example filename="qmldialcontrol" name="Qml Dial Control" image="screenshots/qmldialcontrol.png"/>
+ <example filename="qmleasing" name="Qml Easing Curves" image="screenshots/qmleasing.png"/>
+ <example filename="qmlflickr" name="Qml flickr" image="screenshots/qmlflickr.jpg"/>
+ <example filename="qmlphotoviewer" name="Qml Photo Viewer" image="screenshots/qmlphotoviewer.jpg"/>
+ <example filename="qmltwitter" name="Qml twitter" image="screenshots/qmltwitter.jpg"/>
</demos>
<slideshow timeout="60000" interval="10000">
<imagedir dir="slides"/>
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.pro b/demos/embedded/fluidlauncher/fluidlauncher.pro
index bb512d9..416e58b 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.pro
+++ b/demos/embedded/fluidlauncher/fluidlauncher.pro
@@ -2,6 +2,7 @@ TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
+VERSION = $$QT_VERSION
# Input
HEADERS += \
@@ -215,6 +216,16 @@ symbian {
$$appResourceDir(examples/script/context2d/context2d.mif)
}
+ qmldemos = qmlcalculator qmlclocks qmldialcontrol qmleasing qmlflickr qmlphotoviewer qmltwitter
+ contains(QT_CONFIG, declarative) {
+ for(qmldemo, qmldemos) {
+ executables.sources += $$QT_BUILD_TREE/demos/embedded/$${qmldemo}/$${qmldemo}.exe
+ reg_resource.sources += $$regResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}_reg.rsc)
+ resource.sources += $$appResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}.rsc)
+ mifs.sources += $$appResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}.mif)
+ }
+ }
+
files.sources = $$PWD/screenshots $$PWD/slides
files.path = .
@@ -243,6 +254,8 @@ symbian {
DEPLOYMENT += config files executables viewerimages saxbookmarks reg_resource resource \
mifs desktopservices_music desktopservices_images fluidbackup
+ contains(QT_CONFIG, declarative):for(qmldemo, qmldemos):include($$QT_BUILD_TREE/demos/embedded/$${qmldemo}/deployment.pri)
+
DEPLOYMENT.installer_header = 0xA000D7CD
TARGET.EPOCHEAPSIZE = 100000 20000000
diff --git a/demos/embedded/fluidlauncher/screenshots/qmlcalculator.png b/demos/embedded/fluidlauncher/screenshots/qmlcalculator.png
new file mode 100644
index 0000000..f4218f5
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/qmlcalculator.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/qmlclocks.png b/demos/embedded/fluidlauncher/screenshots/qmlclocks.png
new file mode 100644
index 0000000..ba25a18
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/qmlclocks.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/qmldialcontrol.png b/demos/embedded/fluidlauncher/screenshots/qmldialcontrol.png
new file mode 100644
index 0000000..b8def8c
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/qmldialcontrol.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/qmleasing.png b/demos/embedded/fluidlauncher/screenshots/qmleasing.png
new file mode 100644
index 0000000..d34c2ac
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/qmleasing.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/qmlflickr.jpg b/demos/embedded/fluidlauncher/screenshots/qmlflickr.jpg
new file mode 100644
index 0000000..d7faabf
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/qmlflickr.jpg
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/qmlphotoviewer.jpg b/demos/embedded/fluidlauncher/screenshots/qmlphotoviewer.jpg
new file mode 100644
index 0000000..673ffc6
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/qmlphotoviewer.jpg
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/qmltwitter.jpg b/demos/embedded/fluidlauncher/screenshots/qmltwitter.jpg
new file mode 100644
index 0000000..4399eea
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/qmltwitter.jpg
Binary files differ
diff --git a/demos/embedded/qmlcalculator/deployment.pri b/demos/embedded/qmlcalculator/deployment.pri
new file mode 100644
index 0000000..d5078f6
--- /dev/null
+++ b/demos/embedded/qmlcalculator/deployment.pri
@@ -0,0 +1,7 @@
+qmlcalculator_src = $$PWD/../../declarative/calculator
+symbian {
+ qmlcalculator_uid3 = EA8EBD98
+ qmlcalculator_files.path = ../$$qmlcalculator_uid3
+}
+qmlcalculator_files.sources = $$qmlcalculator_src/calculator.qml $$qmlcalculator_src/Core
+DEPLOYMENT += qmlcalculator_files
diff --git a/demos/embedded/qmlcalculator/qmlcalculator.cpp b/demos/embedded/qmlcalculator/qmlcalculator.cpp
new file mode 100644
index 0000000..3030e81
--- /dev/null
+++ b/demos/embedded/qmlcalculator/qmlcalculator.cpp
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeView>
+
+#if defined(Q_OS_SYMBIAN)
+#include <eikenv.h>
+#include <eikappui.h>
+#include <aknenv.h>
+#include <aknappui.h>
+#endif // Q_OS_SYMBIAN
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+
+ const QString mainQmlApp = QLatin1String("calculator.qml");
+ QDeclarativeView view;
+ view.setSource(QUrl(mainQmlApp));
+ view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
+
+#if defined(QT_KEYPAD_NAVIGATION)
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif // QT_KEYPAD_NAVIGATION
+
+#if defined(Q_OS_SYMBIAN)
+ CAknAppUi* appUi = dynamic_cast<CAknAppUi*> (CEikonEnv::Static()->AppUi());
+ TRAPD(error,
+ if (appUi)
+ appUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait)
+ )
+ view.showFullScreen();
+#else // Q_OS_SYMBIAN
+ view.show();
+#endif // Q_OS_SYMBIAN
+
+ return application.exec();
+}
diff --git a/demos/embedded/qmlcalculator/qmlcalculator.pro b/demos/embedded/qmlcalculator/qmlcalculator.pro
new file mode 100644
index 0000000..1e71eed
--- /dev/null
+++ b/demos/embedded/qmlcalculator/qmlcalculator.pro
@@ -0,0 +1,12 @@
+!symbian:!wince*:warning("DEPLOYMENT support required. This project only works on Symbian and WinCE.")
+
+QT += declarative
+SOURCES += $$PWD/qmlcalculator.cpp
+include($$PWD/deployment.pri)
+
+symbian {
+ TARGET.UID3 = 0x$$qmlcalculator_uid3 # defined in deployment.pri
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+ LIBS += -lcone -leikcore -lavkon # Screen orientation
+}
diff --git a/demos/embedded/qmlclocks/deployment.pri b/demos/embedded/qmlclocks/deployment.pri
new file mode 100644
index 0000000..84803ec
--- /dev/null
+++ b/demos/embedded/qmlclocks/deployment.pri
@@ -0,0 +1,7 @@
+qmlclocks_src = $$PWD/../../../examples/declarative/toys/clocks
+symbian {
+ qmlclocks_uid3 = E19225B9
+ qmlclocks_files.path = ../$$qmlclocks_uid3
+}
+qmlclocks_files.sources = $$qmlclocks_src/clocks.qml $$qmlclocks_src/content
+DEPLOYMENT += qmlclocks_files
diff --git a/demos/embedded/qmlclocks/qmlclocks.cpp b/demos/embedded/qmlclocks/qmlclocks.cpp
new file mode 100644
index 0000000..d94cbdd
--- /dev/null
+++ b/demos/embedded/qmlclocks/qmlclocks.cpp
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeView>
+
+#if defined(Q_OS_SYMBIAN)
+#include <eikenv.h>
+#include <eikappui.h>
+#include <aknenv.h>
+#include <aknappui.h>
+#endif // Q_OS_SYMBIAN
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+
+ const QString mainQmlApp = QLatin1String("clocks.qml");
+ QDeclarativeView view;
+ view.setSource(QUrl(mainQmlApp));
+ view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
+
+#if defined(QT_KEYPAD_NAVIGATION)
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif // QT_KEYPAD_NAVIGATION
+
+#if defined(Q_OS_SYMBIAN)
+ CAknAppUi* appUi = dynamic_cast<CAknAppUi*> (CEikonEnv::Static()->AppUi());
+ TRAPD(error,
+ if (appUi)
+ appUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape)
+ )
+ view.showFullScreen();
+#else // Q_OS_SYMBIAN
+ view.show();
+#endif // Q_OS_SYMBIAN
+
+ return application.exec();
+}
diff --git a/demos/embedded/qmlclocks/qmlclocks.pro b/demos/embedded/qmlclocks/qmlclocks.pro
new file mode 100644
index 0000000..5edfe14
--- /dev/null
+++ b/demos/embedded/qmlclocks/qmlclocks.pro
@@ -0,0 +1,12 @@
+!symbian:!wince*:warning("DEPLOYMENT support required. This project only works on Symbian and WinCE.")
+
+QT += declarative
+SOURCES += $$PWD/qmlclocks.cpp
+include($$PWD/deployment.pri)
+
+symbian {
+ TARGET.UID3 = 0x$$qmlclocks_uid3 # defined in deployment.pri
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+ LIBS += -lcone -leikcore -lavkon # Screen orientation
+}
diff --git a/demos/embedded/qmldialcontrol/deployment.pri b/demos/embedded/qmldialcontrol/deployment.pri
new file mode 100644
index 0000000..8eb39b2
--- /dev/null
+++ b/demos/embedded/qmldialcontrol/deployment.pri
@@ -0,0 +1,7 @@
+qmldialcontrol_src = $$PWD/../../../examples/declarative/ui-components/dialcontrol
+symbian {
+ qmldialcontrol_uid3 = E59A9283
+ qmldialcontrol_files.path = ../$$qmldialcontrol_uid3
+}
+qmldialcontrol_files.sources = $$qmldialcontrol_src/dialcontrol.qml $$qmldialcontrol_src/content
+DEPLOYMENT += qmldialcontrol_files
diff --git a/demos/embedded/qmldialcontrol/qmldialcontrol.cpp b/demos/embedded/qmldialcontrol/qmldialcontrol.cpp
new file mode 100644
index 0000000..311cee0
--- /dev/null
+++ b/demos/embedded/qmldialcontrol/qmldialcontrol.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeView>
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+
+ const QString mainQmlApp = QLatin1String("dialcontrol.qml");
+ QDeclarativeView view;
+ view.setSource(QUrl(mainQmlApp));
+ view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
+
+#if defined(QT_KEYPAD_NAVIGATION)
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif // QT_KEYPAD_NAVIGATION
+
+#if defined(Q_OS_SYMBIAN)
+ view.showFullScreen();
+#else // Q_OS_SYMBIAN
+ view.show();
+#endif // Q_OS_SYMBIAN
+
+ return application.exec();
+}
diff --git a/demos/embedded/qmldialcontrol/qmldialcontrol.pro b/demos/embedded/qmldialcontrol/qmldialcontrol.pro
new file mode 100644
index 0000000..193cf55
--- /dev/null
+++ b/demos/embedded/qmldialcontrol/qmldialcontrol.pro
@@ -0,0 +1,11 @@
+!symbian:!wince*:warning("DEPLOYMENT support required. This project only works on Symbian and WinCE.")
+
+QT += declarative
+SOURCES += $$PWD/qmldialcontrol.cpp
+include($$PWD/deployment.pri)
+
+symbian {
+ TARGET.UID3 = 0x$$qmldialcontrol_uid3 # defined in deployment.pri
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/demos/embedded/qmleasing/deployment.pri b/demos/embedded/qmleasing/deployment.pri
new file mode 100644
index 0000000..ddab1ba
--- /dev/null
+++ b/demos/embedded/qmleasing/deployment.pri
@@ -0,0 +1,7 @@
+qmleasing_src = $$PWD/../../../examples/declarative/animation/easing
+symbian {
+ qmleasing_uid3 = E8E8E725
+ qmleasing_files.path = ../$$qmleasing_uid3
+}
+qmleasing_files.sources = $$qmleasing_src/easing.qml
+DEPLOYMENT += qmleasing_files
diff --git a/demos/embedded/qmleasing/qmleasing.cpp b/demos/embedded/qmleasing/qmleasing.cpp
new file mode 100644
index 0000000..d326468
--- /dev/null
+++ b/demos/embedded/qmleasing/qmleasing.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeView>
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+
+ const QString mainQmlApp = QLatin1String("easing.qml");
+ QDeclarativeView view;
+ view.setSource(QUrl(mainQmlApp));
+ view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
+
+#if defined(QT_KEYPAD_NAVIGATION)
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif // QT_KEYPAD_NAVIGATION
+
+#if defined(Q_OS_SYMBIAN)
+ view.showFullScreen();
+#else // Q_OS_SYMBIAN
+ view.show();
+#endif // Q_OS_SYMBIAN
+
+ return application.exec();
+}
diff --git a/demos/embedded/qmleasing/qmleasing.pro b/demos/embedded/qmleasing/qmleasing.pro
new file mode 100644
index 0000000..084a880
--- /dev/null
+++ b/demos/embedded/qmleasing/qmleasing.pro
@@ -0,0 +1,11 @@
+!symbian:!wince*:warning("DEPLOYMENT support required. This project only works on Symbian and WinCE.")
+
+QT += declarative
+SOURCES += $$PWD/qmleasing.cpp
+include($$PWD/deployment.pri)
+
+symbian {
+ TARGET.UID3 = 0x$$qmleasing_uid3 # defined in deployment.pri
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/demos/embedded/qmlflickr/deployment.pri b/demos/embedded/qmlflickr/deployment.pri
new file mode 100644
index 0000000..aef3198
--- /dev/null
+++ b/demos/embedded/qmlflickr/deployment.pri
@@ -0,0 +1,7 @@
+qmlflickr_src = $$PWD/../../declarative/flickr
+symbian {
+ qmlflickr_uid3 = E56D5A92
+ qmlflickr_files.path = ../$$qmlflickr_uid3
+}
+qmlflickr_files.sources = $$qmlflickr_src/flickr.qml $$qmlflickr_src/common $$qmlflickr_src/mobile
+DEPLOYMENT += qmlflickr_files
diff --git a/demos/embedded/qmlflickr/qmlflickr.cpp b/demos/embedded/qmlflickr/qmlflickr.cpp
new file mode 100644
index 0000000..6f0c528
--- /dev/null
+++ b/demos/embedded/qmlflickr/qmlflickr.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeView>
+#include <QtDeclarative/QDeclarativeEngine>
+
+#if defined(Q_OS_SYMBIAN)
+#include <QtCore/QTextCodec>
+#include <QtCore/QTimer>
+#include "sym_iap_util.h"
+
+class QmlAppView : public QDeclarativeView
+{
+Q_OBJECT
+public:
+ QmlAppView(QWidget *parent = 0)
+ : QDeclarativeView(parent)
+ {
+ QTimer::singleShot(0, this, SLOT(setDefaultIap()));
+ }
+
+private slots:
+ void setDefaultIap()
+ {
+ qt_SetDefaultIap();
+ }
+};
+#else // Q_OS_SYMBIAN
+typedef QDeclarativeView QmlAppView;
+#endif // Q_OS_SYMBIAN
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+
+ const QString mainQmlApp = QLatin1String("flickr.qml");
+ QmlAppView view;
+ view.setSource(QUrl(mainQmlApp));
+ view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
+
+#if defined(Q_OS_SYMBIAN)
+ view.showFullScreen();
+#else // Q_OS_SYMBIAN
+ view.setGeometry(QRect(100, 100, 360, 640));
+ view.show();
+#endif // Q_OS_SYMBIAN
+ return application.exec();
+}
+
+#if defined(Q_OS_SYMBIAN)
+#include "qmlflickr.moc"
+#endif // Q_OS_SYMBIAN
diff --git a/demos/embedded/qmlflickr/qmlflickr.pro b/demos/embedded/qmlflickr/qmlflickr.pro
new file mode 100644
index 0000000..e706134
--- /dev/null
+++ b/demos/embedded/qmlflickr/qmlflickr.pro
@@ -0,0 +1,14 @@
+!symbian:!wince*:warning("DEPLOYMENT support required. This project only works on Symbian and WinCE.")
+
+QT += declarative network
+SOURCES += $$PWD/qmlflickr.cpp
+include($$PWD/deployment.pri)
+
+symbian {
+ TARGET.UID3 = 0x$$qmlflickr_uid3 # defined in deployment.pri
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ INCLUDEPATH += $$QT_SOURCE_TREE/examples/network/qftp/
+ LIBS += -lesock -lcommdb -linsock # For IAP selection
+ TARGET.CAPABILITY = NetworkServices
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/demos/embedded/qmlphotoviewer/deployment.pri b/demos/embedded/qmlphotoviewer/deployment.pri
new file mode 100644
index 0000000..99475cc
--- /dev/null
+++ b/demos/embedded/qmlphotoviewer/deployment.pri
@@ -0,0 +1,7 @@
+qmlphotoviewer_src = $$PWD/../../declarative/photoviewer
+symbian {
+ qmlphotoviewer_uid3 = E8567E72
+ qmlphotoviewer_files.path = ../$$qmlphotoviewer_uid3
+}
+qmlphotoviewer_files.sources = $$qmlphotoviewer_src/photoviewer.qml $$qmlphotoviewer_src/PhotoViewerCore
+DEPLOYMENT += qmlphotoviewer_files
diff --git a/demos/embedded/qmlphotoviewer/qmlphotoviewer.cpp b/demos/embedded/qmlphotoviewer/qmlphotoviewer.cpp
new file mode 100644
index 0000000..7889842
--- /dev/null
+++ b/demos/embedded/qmlphotoviewer/qmlphotoviewer.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeView>
+#include <QtDeclarative/QDeclarativeEngine>
+
+#if defined(Q_OS_SYMBIAN)
+#include <QtCore/QTextCodec>
+#include <QtCore/QTimer>
+#include "sym_iap_util.h"
+
+class QmlAppView : public QDeclarativeView
+{
+Q_OBJECT
+public:
+ QmlAppView(QWidget *parent = 0)
+ : QDeclarativeView(parent)
+ {
+ QTimer::singleShot(0, this, SLOT(setDefaultIap()));
+ }
+
+private slots:
+ void setDefaultIap()
+ {
+ qt_SetDefaultIap();
+ }
+};
+#else // Q_OS_SYMBIAN
+typedef QDeclarativeView QmlAppView;
+#endif // Q_OS_SYMBIAN
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+
+ const QString mainQmlApp = QLatin1String("photoviewer.qml");
+ QmlAppView view;
+ view.setSource(QUrl(mainQmlApp));
+ view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
+
+#if defined(Q_OS_SYMBIAN)
+ view.showFullScreen();
+#else // Q_OS_SYMBIAN
+ view.setGeometry(QRect(100, 100, 360, 640));
+ view.show();
+#endif // Q_OS_SYMBIAN
+ return application.exec();
+}
+
+#if defined(Q_OS_SYMBIAN)
+#include "qmlphotoviewer.moc"
+#endif // Q_OS_SYMBIAN
diff --git a/demos/embedded/qmlphotoviewer/qmlphotoviewer.pro b/demos/embedded/qmlphotoviewer/qmlphotoviewer.pro
new file mode 100644
index 0000000..ead5e67
--- /dev/null
+++ b/demos/embedded/qmlphotoviewer/qmlphotoviewer.pro
@@ -0,0 +1,14 @@
+!symbian:!wince*:warning("DEPLOYMENT support required. This project only works on Symbian and WinCE.")
+
+QT += declarative network
+SOURCES += $$PWD/qmlphotoviewer.cpp
+include($$PWD/deployment.pri)
+
+symbian {
+ TARGET.UID3 = 0x$$qmlphotoviewer_uid3 # defined in deployment.pri
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ INCLUDEPATH += $$QT_SOURCE_TREE/examples/network/qftp/
+ LIBS += -lesock -lcommdb -linsock # For IAP selection
+ TARGET.CAPABILITY = NetworkServices
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/demos/embedded/qmltwitter/deployment.pri b/demos/embedded/qmltwitter/deployment.pri
new file mode 100644
index 0000000..e5bd884
--- /dev/null
+++ b/demos/embedded/qmltwitter/deployment.pri
@@ -0,0 +1,7 @@
+qmltwitter_src = $$PWD/../../declarative/twitter
+symbian {
+ qmltwitter_uid3 = EEF6D468
+ qmltwitter_files.path = ../$$qmltwitter_uid3
+}
+qmltwitter_files.sources = $$qmltwitter_src/twitter.qml $$qmltwitter_src/TwitterCore
+DEPLOYMENT += qmltwitter_files
diff --git a/demos/embedded/qmltwitter/qmltwitter.cpp b/demos/embedded/qmltwitter/qmltwitter.cpp
new file mode 100644
index 0000000..e30ab24
--- /dev/null
+++ b/demos/embedded/qmltwitter/qmltwitter.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeView>
+#include <QtDeclarative/QDeclarativeEngine>
+
+#if defined(Q_OS_SYMBIAN)
+#include <QtCore/QTextCodec>
+#include <QtCore/QTimer>
+#include "sym_iap_util.h"
+
+class QmlAppView : public QDeclarativeView
+{
+Q_OBJECT
+public:
+ QmlAppView(QWidget *parent = 0)
+ : QDeclarativeView(parent)
+ {
+ QTimer::singleShot(0, this, SLOT(setDefaultIap()));
+ }
+
+private slots:
+ void setDefaultIap()
+ {
+ qt_SetDefaultIap();
+ }
+};
+#else // Q_OS_SYMBIAN
+typedef QDeclarativeView QmlAppView;
+#endif // Q_OS_SYMBIAN
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+
+ const QString mainQmlApp = QLatin1String("twitter.qml");
+ QmlAppView view;
+ view.setSource(QUrl(mainQmlApp));
+ view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
+
+#if defined(Q_OS_SYMBIAN)
+ view.showFullScreen();
+#else // Q_OS_SYMBIAN
+ view.setGeometry(QRect(100, 100, 360, 640));
+ view.show();
+#endif // Q_OS_SYMBIAN
+ return application.exec();
+}
+
+#if defined(Q_OS_SYMBIAN)
+#include "qmltwitter.moc"
+#endif // Q_OS_SYMBIAN
diff --git a/demos/embedded/qmltwitter/qmltwitter.pro b/demos/embedded/qmltwitter/qmltwitter.pro
new file mode 100644
index 0000000..7f9be57
--- /dev/null
+++ b/demos/embedded/qmltwitter/qmltwitter.pro
@@ -0,0 +1,14 @@
+!symbian:!wince*:warning("DEPLOYMENT support required. This project only works on Symbian and WinCE.")
+
+QT += declarative network
+SOURCES += $$PWD/qmltwitter.cpp
+include($$PWD/deployment.pri)
+
+symbian {
+ TARGET.UID3 = 0x$$qmltwitter_uid3 # defined in deployment.pri
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ INCLUDEPATH += $$QT_SOURCE_TREE/examples/network/qftp/
+ LIBS += -lesock -lcommdb -linsock # For IAP selection
+ TARGET.CAPABILITY = NetworkServices
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/demos/qmediaplayer/qmediaplayer.pro b/demos/qmediaplayer/qmediaplayer.pro
index cfe3905..9407a81 100644
--- a/demos/qmediaplayer/qmediaplayer.pro
+++ b/demos/qmediaplayer/qmediaplayer.pro
@@ -17,7 +17,7 @@ HEADERS += mediaplayer.h
target.path = $$[QT_INSTALL_DEMOS]/qmediaplayer
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.html *.doc images
-sources.path = $$[QT_INSTALL_DEMOS]/qmediaplayer qmediaplayer.pro
+sources.path = $$[QT_INSTALL_DEMOS]/qmediaplayer
INSTALLS += target sources
wince*{
diff --git a/demos/spectrum/app/spectrum.sh b/demos/spectrum/app/spectrum.sh
index 75ad6c2..2a230ed 100644
--- a/demos/spectrum/app/spectrum.sh
+++ b/demos/spectrum/app/spectrum.sh
@@ -1,4 +1,45 @@
#!/bin/sh
+#############################################################################
+##
+## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the examples of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## No Commercial Usage
+## This file contains pre-release code and may not be distributed.
+## You may use this file in accordance with the terms and conditions
+## contained in the Technology Preview License Agreement accompanying
+## this package.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 2.1 requirements
+## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights. These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at qt-info@nokia.com.
+##
+##
+##
+##
+##
+##
+##
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
# Shell script for launching spectrum application on Unix systems other than Mac OSX
diff --git a/demos/spectrum/spectrum.pro b/demos/spectrum/spectrum.pro
index 8736ba7..a8f09de 100644
--- a/demos/spectrum/spectrum.pro
+++ b/demos/spectrum/spectrum.pro
@@ -1,4 +1,3 @@
-load(data_caging_paths)
include(spectrum.pri)
TEMPLATE = subdirs
@@ -15,6 +14,8 @@ SUBDIRS += app
TARGET = spectrum
symbian {
+ load(data_caging_paths)
+
# Create a 'make sis' rule which can be run from the top-level
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/dist/changes-4.7.0 b/dist/changes-4.7.0
index e7b1e84..95cff56 100644
--- a/dist/changes-4.7.0
+++ b/dist/changes-4.7.0
@@ -50,14 +50,27 @@ Third party components
QtCore
------
+ - QString
+ * Added QString(const QChar *) constructor.
+ NOTE: This is source-incompatible for the bogus QString(0) case.
+ * Removed internal but exported qt_winQString2MB() and qt_winMB2QString()
+ * Added setRawData() function (also revived the one in QByteArray)
+ * Various performance improvements
+ - QList
+ * Added reserve() function
+ * Various performance improvements
- QMetaType
* Significantly improved performance of the type() function
+ * [QTBUG-8235] Support QEasingCurve as a built in metatype.
- QState
* [QTBUG-7741] Added a function to get the out-going transitions
- QXmlStreamReader
* [QTBUG-9196] fixed crash when parsing
- QTimer
* singleShot with 0 timeout will now avoid allocating objects
+ - QAbstractAnimation
+ * [QTBUG-10654] Avoids animation with loopCount == 0 to change state
+ to running and stopped.
QtGui
-----
@@ -95,6 +108,8 @@ QtGui
- QGraphicsTextItem
* [QTBUG-7333] Fixed keyboard shortcuts not being triggered when the
the item has focus and something else has the same shortcut sequence.
+ * [QTBUG-10574] Fixed crash when flag "QGraphicsItem::ItemIgnoresTransformations"
+ is set.
- QGraphicsView
* [QTBUG-7438] Fixed viewport cursor getting reset when releasing
@@ -289,12 +304,7 @@ Qt for Windows CE
- [QTBUG-5492] Made widgetbox-filter match on class names, too.
- Linguist
- - Linguist GUI
-
- - lupdate
-
- - lrelease
-
+ * The GNU gettext PO format support has been improved
- rcc
@@ -310,6 +320,29 @@ Qt for Windows CE
compatibility option -limit-xpm-linelength.
- qmake
+ * Removed remainder of tmake compatibility
+ * Removed remainder of mac9 mode
+ * Removed MSVC6 generator
+ * Removed makespecs for MSVC.NET and MSVC2002
+ * Deprecated -win32/-unix/-macx options, following various cleanups
+ relating to platform support. Cross-building makespecs should now
+ specify a TARGET_PLATFORM.
+ * Started to warn about use of various constructs:
+ - non-lowercased replace $$function() calls
+ - deprecated variables
+ - unescaped backslashes.
+ NOTE: You should use UNIX path separators where possible. qmake
+ will warn about unnecessary Windows path separators in the future.
+ * Removed expansion of qmake- & environment variables in some unexpected
+ cases (double expansions, command line options, etc.)
+ * Removed splitting at semicolons of literal values which were assigned
+ directly to INCLUDEPATH and DEPENDPATH
+ * Removed UNIX-specific exporting of all qmake variables to the environment
+ of subprocesses invoked via system(). You should put specific assignments
+ into the invoked shell command instead.
+ * Started to short-cut evaluation inside if() tests, consistently with
+ evaluation outside if().
+ * Added possibility to request project recursion from within a PRO file
- configure
diff --git a/doc/src/declarative/animation.qdoc b/doc/src/declarative/animation.qdoc
index 6e98949..c320898 100644
--- a/doc/src/declarative/animation.qdoc
+++ b/doc/src/declarative/animation.qdoc
@@ -46,14 +46,14 @@
Animation in QML is done by animating properties of objects. Properties of type
real, int, color, rect, point, size, and vector3d can all be animated.
-QML supports three main forms of animation - basic property animation,
+QML supports three main forms of animation: basic property animation,
transitions, and property behaviors.
\tableofcontents
\section1 Basic Property Animation
-The simplest form of animation is directly using \l PropertyAnimation, which can animate all of the property
+The simplest form of animation is a \l PropertyAnimation, which can animate all of the property
types listed above. If the property you are animating is a number or color, you can alternatively use
NumberAnimation or ColorAnimation. These elements don't add any additional functionality,
but will help enforce type correctness and are slightly more efficient.
@@ -62,61 +62,23 @@ A property animation can be specified as a value source using the \e Animation \
for repeating animations.
The following example creates a bouncing effect:
-\qml
-Rectangle {
- id: rect
- width: 120; height: 200;
- Image {
- id: img
- source: "qt-logo.png"
- x: 60-img.width/2
- y: 0
- SequentialAnimation on y {
- loops: Animation.Infinite
- NumberAnimation { to: 200-img.height; easing.type: Easing.OutBounce; duration: 2000 }
- PauseAnimation { duration: 1000 }
- NumberAnimation { to: 0; easing.type: Easing.OutQuad; duration: 1000 }
- }
- }
-}
-\endqml
+\snippet doc/src/snippets/declarative/animation.qml property-anim-1
\image propanim.gif
When you assign an animation as a value source, you do not need to specify \c property
-or \c target; they are automatically selected for you. You do, however, need to specify \c to.
+or \c target values; they are automatically selected for you. You do, however, need to specify a \c to value.
An animation specified as a value source will be \c running by default.
-\qml
-Rectangle {
- id: rect
- width: 200; height: 200;
- Rectangle {
- color: "red"
- width: 50; height: 50
- NumberAnimation on x { to: 50 }
- }
-}
-\endqml
+For example, here is a rectangle that uses a \l NumberAnimation value source to animate the movement
+from its current position to an \c x value of 50. The animation starts immediately, and only the \c to
+property is required:
+
+\snippet doc/src/snippets/declarative/animation.qml property-anim-2
A property animation can also be specified as a resource that is manipulated from script.
-\qml
-PropertyAnimation {
- id: animation
- target: image
- property: "scale"
- from: 1; to: .5
-}
-Image {
- id: image
- source: "image.png"
- MouseArea {
- anchors.fill: parent
- onPressed: animation.start()
- }
-}
-\endqml
+\snippet doc/src/snippets/declarative/animation.qml property-anim-3
As can be seen, when an animation is used like this (as opposed to as a value source) you will need
to explicitly set the \c target and \c property to animate.
@@ -131,50 +93,20 @@ can only be triggered by a state change.
For example, a transition could describe how an item moves from its initial position to its new position:
-\code
-transitions: [
- Transition {
- NumberAnimation {
- properties: "x,y"
- easing.type: Easing.OutBounce
- duration: 200
- }
- }
-]
-\endcode
+\snippet doc/src/snippets/declarative/animation.qml transitions-1
As can be seen, transitions make use of the same basic animation classes introduced above.
In the above example we have specified that we want to animate the \c x and \c y properties, but have not
-specified the objects to animate or the \c to values. By default these values are supplied by the framework --
+specified the objects to animate or the \c to values. By default these values are supplied by the framework;
the animation will animate any \c targets whose \c x and \c y have changed, and the \c to values will be those
defined in the end state. You can always supply explicit values to override these implicit values when needed.
-\code
-Transition {
- from: "*"
- to: "MyState"
- reversible: true
- SequentialAnimation {
- NumberAnimation {
- duration: 1000
- easing.type: Easing.OutBounce
- // animate myItem's x and y if they have changed in the state
- target: myItem
- properties: "x,y"
- }
- NumberAnimation {
- duration: 1000
- // animate myItem2's y to 200, regardless of what happens in the state
- target: myItem2
- property: "y"
- to: 200
- }
- }
-}
-\endcode
+\snippet doc/src/snippets/declarative/animation.qml transitions-2
QML transitions have selectors to determine which state changes a transition should apply to.
The following transition will only be triggered when we enter into the \c "details" state.
+(The "*" value is a wildcard value that specifies the transition should be applied when changing
+from \e any state to the "details" state.)
\code
Transition {
@@ -188,30 +120,7 @@ Transitions can happen in parallel, in sequence, or in any combination of the tw
animations in a transition will happen in parallel. The following example shows a rather complex transition
making use of both sequential and parallel animations:
-\code
-Transition {
- from: "*"
- to: "MyState"
- reversible: true
- SequentialAnimation {
- ColorAnimation { duration: 1000 }
- PauseAnimation { duration: 1000 }
- ParallelAnimation {
- NumberAnimation {
- duration: 1000
- easing.type: Easing.OutBounce
- targets: box1
- properties: "x,y"
- }
- NumberAnimation {
- duration: 1000
- targets: box2
- properties: "x,y"
- }
- }
- }
-}
-\endcode
+\snippet doc/src/snippets/declarative/animation.qml transitions-3
\section1 Property Behaviors
@@ -219,24 +128,15 @@ A \l{Behavior}{property behavior} specifies a default animation to run whenever
of what caused the change. The \c enabled property can be used to force a \l Behavior
to only apply under certain circumstances.
-In the following snippet, we specify that we want the x position of redRect to be animated
-whenever it changes. The animation will last 300 milliseconds and use an InOutQuad easing curve.
+In the following snippet, we specify that we want the \c x position of \c redRect to be animated
+whenever it changes. The animation will last 300 milliseconds and use an \l{PropertyAnimation::easing.type}{Easing.InOutQuad} easing curve.
-\qml
-Rectangle {
- id: redRect
- color: "red"
- width: 100; height: 100
- Behavior on x { NumberAnimation { duration: 300; easing.type: Easing.InOutQuad } }
-}
-\endqml
+\snippet doc/src/snippets/declarative/animation.qml behavior
Like using an animation as a value source, when used in a Behavior and animation does not need to specify
a \c target or \c property.
-To trigger this behavior, we could:
-\list
-\o Enter a state that changes x
+To trigger this behavior, we could enter a state that changes \c x:
\qml
State {
@@ -249,7 +149,7 @@ State {
}
\endqml
-\o Update x from a script
+Or, update \c x from a script:
\qml
MouseArea {
@@ -257,11 +157,10 @@ MouseArea {
onClicked: redRect.x = 24;
}
\endqml
-\endlist
-If x were bound to another property, triggering the binding would also trigger the behavior.
+If \c x were bound to another property, triggering the binding would also trigger the behavior.
-If a state change has a transition animation matching a property with a Behavior, the transition animation
-will override the Behavior for that state change.
+If a state change has a transition animation matching a property with a \l Behavior, the transition animation
+will override the \l Behavior for that state change.
*/
diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc
index 43ae214..87dab81 100644
--- a/doc/src/declarative/basictypes.qdoc
+++ b/doc/src/declarative/basictypes.qdoc
@@ -40,363 +40,377 @@
****************************************************************************/
/*!
- \page qdeclarativebasictypes.html
- \title QML Basic Types
+ \page qdeclarativebasictypes.html
+ \title QML Basic Types
- QML has a set of primitive types, as listed below, that are used throughout
- the \l {QML Elements}.
+ QML has a set of primitive types, as listed below, that are used throughout
+ the \l {QML Elements}.
- Some of these types can also be used for defining
- \c property values in QML. See \l{Extending types from QML} for the
- list of types that can be used for \c property values.
+ Some of these types can also be used for defining
+ \c property values in QML. See \l{Extending types from QML} for the
+ list of types that can be used for \c property values.
- \annotatedlist qmlbasictypes
+ \annotatedlist qmlbasictypes
*/
/*!
- \qmlbasictype int
- \ingroup qmlbasictypes
+ \qmlbasictype int
+ \ingroup qmlbasictypes
- \brief An integer is a whole number, e.g. 0, 10, or -20.
+ \brief An integer is a whole number, e.g. 0, 10, or -20.
- An integer is a whole number, e.g. 0, 10, or -20. The possible \c
- int values range from around -2000000000 to around 2000000000,
- although most elements will only accept a reduced range (which they
- mention in their documentation).
+ An integer is a whole number, e.g. 0, 10, or -20. The possible \c
+ int values range from around -2000000000 to around 2000000000,
+ although most elements will only accept a reduced range (which they
+ mention in their documentation).
- Example:
- \qml
- Item { width: 100; height: 200 }
- \endqml
+ Example:
+ \qml
+ Item { width: 100; height: 200 }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype bool
- \ingroup qmlbasictypes
+ \qmlbasictype bool
+ \ingroup qmlbasictypes
- \brief A boolean is a binary true/false value.
+ \brief A boolean is a binary true/false value.
- A boolean is a binary true/false value.
+ A boolean is a binary true/false value.
- Example:
- \qml
- Item { focus: true; clip: false }
- \endqml
+ Example:
+ \qml
+ Item { focus: true; clip: false }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype real
- \ingroup qmlbasictypes
+ \qmlbasictype real
+ \ingroup qmlbasictypes
- \brief A real number has a decimal point, e.g. 1.2 or -29.8.
+ \brief A real number has a decimal point, e.g. 1.2 or -29.8.
- A real number has a decimal point, e.g. 1.2 or -29.8.
+ A real number has a decimal point, e.g. 1.2 or -29.8.
- Example:
- \qml
- Item { width: 100.45; height: 150.82 }
- \endqml
+ Example:
+ \qml
+ Item { width: 100.45; height: 150.82 }
+ \endqml
- \note In QML all reals are stored in single precision, \l
- {http://en.wikipedia.org/wiki/IEEE_754} {IEEE floating point}
- format.
+ \note In QML all reals are stored in single precision, \l
+ {http://en.wikipedia.org/wiki/IEEE_754} {IEEE floating point}
+ format.
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype string
- \ingroup qmlbasictypes
+ \qmlbasictype string
+ \ingroup qmlbasictypes
- \brief A string is a free form text in quotes, e.g. "Hello world!".
+ \brief A string is a free form text in quotes, e.g. "Hello world!".
- A string is a free form text in quotes, e.g. "Hello world!".
+ A string is a free form text in quotes, e.g. "Hello world!".
- Example:
- \qml
- Text { text: "Hello world!" }
- \endqml
+ Example:
+ \qml
+ Text { text: "Hello world!" }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype url
- \ingroup qmlbasictypes
+ \qmlbasictype url
+ \ingroup qmlbasictypes
- \brief A URL is a resource locator, like a file name.
+ \brief A URL is a resource locator, like a file name.
- A URL is a resource locator, like a file name. It can be either
- absolute, e.g. "http://qt.nokia.com", or relative, e.g.
- "pics/logo.png". A relative URL is resolved relative to the URL of
- the component where the URL is converted from a JavaScript string
- expression to a url property value.
+ A URL is a resource locator, like a file name. It can be either
+ absolute, e.g. "http://qt.nokia.com", or relative, e.g.
+ "pics/logo.png". A relative URL is resolved relative to the URL of
+ the component where the URL is converted from a JavaScript string
+ expression to a url property value.
- Example:
- \qml
- Image { source: "pics/logo.png" }
- \endqml
+ Example:
+ \qml
+ Image { source: "pics/logo.png" }
+ \endqml
- \raw HTML
- \endraw
+ \raw HTML
+ \endraw
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype color
- \ingroup qmlbasictypes
+ \qmlbasictype color
+ \ingroup qmlbasictypes
- \brief A color is a standard color name in quotes.
+ \brief A color is a standard color name in quotes.
- A color is a standard color name in quotes. It is normally specified
- as an \l {http://www.w3.org/TR/SVG/types.html#ColorKeywords} {SVG
- color name}. These names include colors like "red", "green" and
- "lightsteelblue".
+ A color is a standard color name in quotes. It is normally specified
+ as an \l {http://www.w3.org/TR/SVG/types.html#ColorKeywords} {SVG
+ color name}. These names include colors like "red", "green" and
+ "lightsteelblue".
- If the color you want isn't part of this list, colors can also be
- specified in hexidecimal triplets or quads that take the form \c
- "#RRGGBB" and \c "#AARRGGBB" respectively. For example, the color
- red corresponds to a triplet of \c "#FF0000" and a slightly
- transparent blue to a quad of \c "#800000FF".
+ If the color you want isn't part of this list, colors can also be
+ specified in hexidecimal triplets or quads that take the form \c
+ "#RRGGBB" and \c "#AARRGGBB" respectively. For example, the color
+ red corresponds to a triplet of \c "#FF0000" and a slightly
+ transparent blue to a quad of \c "#800000FF".
- Example:
- \qml
- Rectangle { color: "steelblue" }
- Rectangle { color: "#FF0000" }
- Rectangle { color: "#800000FF" }
- \endqml
+ Example:
+ \qml
+ Rectangle { color: "steelblue" }
+ Rectangle { color: "#FF0000" }
+ Rectangle { color: "#800000FF" }
+ \endqml
- Or with the \l{Qt::rgba()}{Qt.rgba()}, \l{Qt::hsla()}{Qt.hsla()}, \l{Qt::darker()}{Qt.darker()},
- \l{Qt::lighter()}{Qt.lighter()} or \l{Qt::tint()}{Qt.tint()} functions:
+ Or with the \l{Qt::rgba()}{Qt.rgba()}, \l{Qt::hsla()}{Qt.hsla()}, \l{Qt::darker()}{Qt.darker()},
+ \l{Qt::lighter()}{Qt.lighter()} or \l{Qt::tint()}{Qt.tint()} functions:
- \qml
- Rectangle { color: Qt.rgba(255, 0, 0, 1) }
- \endqml
+ \qml
+ Rectangle { color: Qt.rgba(255, 0, 0, 1) }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype point
- \ingroup qmlbasictypes
+ \qmlbasictype point
+ \ingroup qmlbasictypes
- \brief A point is specified as "x,y".
+ \brief A point type has x and y attributes.
- A point is specified as "x,y".
+ A \c point type has \c x and \c y attributes.
- Example:
- \qml
- MyItem { position: "0,20" }
- \endqml
+ To create a \c point value, specify it as a "x,y" string:
- Or with the \l{Qt::point()}{Qt.point()} function:
+ \qml
+ CustomObject { myPointProperty: "0,20" }
+ \endqml
- \qml
- MyItem { position: Qt.point(0, 20) }
- \endqml
+ Or use the \l{Qt::point()}{Qt.point()} function:
- A point object has \c x and \c y attributes that contain the \c x and \c y values.
+ \qml
+ CustomObject { myPointProperty: Qt.point(0, 20) }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype size
- \ingroup qmlbasictypes
+ \qmlbasictype size
+ \ingroup qmlbasictypes
+
+ \brief A size type has width and height attributes
- \brief A size is specified as "width x height".
+ A \c size type has \c width and \c height attributes.
- A size is specified as "width x height".
+ For example, to read the \l {Image::sourceSize} \c size property:
- Example:
- \qml
- LayoutItem { preferredSize: "150x50" }
- \endqml
+ \qml
+ Column {
+ Image { id: image; source: "logo.png" }
+ Text { text: image.sourceSize.width + "," + image.sourceSize.height }
+ }
+ \endqml
- Or with the \l{Qt::size()}{Qt.size()} function:
+ To create a \c size value, specify it as a "width x height" string:
- \qml
- MyItem { position: Qt.size(150, 50) }
- \endqml
+ \qml
+ LayoutItem { preferredSize: "150x50" }
+ \endqml
- A size object has \c width and \c height attributes that contain the \c width and \c height values.
+ Or use the \l{Qt::size()}{Qt.size()} function:
- \sa {QML Basic Types}
+ \qml
+ LayoutItem { preferredSize: Qt.size(150, 50) }
+ \endqml
+
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype rect
- \ingroup qmlbasictypes
+ \qmlbasictype rect
+ \ingroup qmlbasictypes
+
+ \brief A rect type has x, y, width and height attributes.
+
+ A \c rect type has \c x, \c y, \c width and \c height attributes.
- \brief A rect is specified as "x, y, width x height".
+ For example, to read the \l {Item::childrenRect.x}{Item::childrenRect} \c rect property:
+ \qml
+ Rectangle {
+ width: childrenRect.width
+ height: childrenRect.height
- A rect is specified as "x, y, width x height".
+ Rectangle { width: 100; height: 100 }
+ }
+ \endqml
- Example:
- \qml
- MyItem { geometry: "50,50,100x100" }
- \endqml
+ To create a \c rect value, specify it as a "x, y, width x height" string:
- Or with the \l{Qt::rect()}{Qt.rect()} function:
+ \qml
+ CustomObject { myRectProperty: "50,50,100x100" }
+ \endqml
- \qml
- MyItem { position: Qt.rect(50, 50, 100, 100) }
- \endqml
+ Or use the \l{Qt::rect()}{Qt.rect()} function:
- A rect object has \c x, \c, y, \c width and \c height attributes that contain the
- \c x, \c y, \c width and \c height values.
+ \qml
+ CustomObject { myRectProperty: Qt.rect(50, 50, 100, 100) }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype date
- \ingroup qmlbasictypes
+ \qmlbasictype date
+ \ingroup qmlbasictypes
- \brief A date is specified as "YYYY-MM-DD".
+ \brief A date is specified as "YYYY-MM-DD".
- A date is specified as "YYYY-MM-DD".
+ To create a \c date value, specify it as a "YYYY-MM-DD" string:
- Example:
- \qml
- MyDatePicker { minDate: "2000-01-01"; maxDate: "2020-12-31" }
- \endqml
+ Example:
+ \qml
+ MyDatePicker { minDate: "2000-01-01"; maxDate: "2020-12-31" }
+ \endqml
- To read a date value returned from a C++ extension class, use
- \l{Qt::formatDate()}{Qt.formatDate()} and \l{Qt::formatDateTime()}{Qt.formatDateTime()}.
+ To read a date value returned from a C++ extension class, use
+ \l{Qt::formatDate()}{Qt.formatDate()} and \l{Qt::formatDateTime()}{Qt.formatDateTime()}.
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype time
- \ingroup qmlbasictypes
+ \qmlbasictype time
+ \ingroup qmlbasictypes
- \brief A time is specified as "hh:mm:ss".
+ \brief A time is specified as "hh:mm:ss".
- A time is specified as "hh:mm:ss".
+ A time is specified as "hh:mm:ss".
- Example:
- \qml
- MyTimePicker { time: "14:22:15" }
- \endqml
+ Example:
+ \qml
+ MyTimePicker { time: "14:22:15" }
+ \endqml
- To read a time value returned from a C++ extension class, use
- \l{Qt::formatTime()}{Qt.formatTime()} and \l{Qt::formatDateTime()}{Qt.formatDateTime()}.
+ To read a time value returned from a C++ extension class, use
+ \l{Qt::formatTime()}{Qt.formatTime()} and \l{Qt::formatDateTime()}{Qt.formatDateTime()}.
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype font
- \ingroup qmlbasictypes
+ \qmlbasictype font
+ \ingroup qmlbasictypes
- \brief A font type has the properties of a QFont.
+ \brief A font type has the properties of a QFont.
- A font type has the properties of a QFont. The properties are:
+ A font type has the properties of a QFont. The properties are:
- \list
- \o \c string font.family
- \o \c bool font.bold
- \o \c bool font.italic
- \o \c bool font.underline
- \o \c real font.pointSize
- \o \c int font.pixelSize
- \endlist
+ \list
+ \o \c string font.family
+ \o \c bool font.bold
+ \o \c bool font.italic
+ \o \c bool font.underline
+ \o \c real font.pointSize
+ \o \c int font.pixelSize
+ \endlist
- Example:
- \qml
- Text { font.family: "Helvetica"; font.pointSize: 13; font.bold: true }
- \endqml
+ Example:
+ \qml
+ Text { font.family: "Helvetica"; font.pointSize: 13; font.bold: true }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype action
- \ingroup qmlbasictypes
+ \qmlbasictype action
+ \ingroup qmlbasictypes
- \brief The action type has all the properties of QAction.
+ \brief The action type has all the properties of QAction.
- The action type has all the properties of QAction. The properties
- are:
+ The action type has all the properties of QAction. The properties
+ are:
- \list
- \o \c slot action.trigger - invoke the action
- \o \c bool action.enabled - true if the action is enabled
- \o \c string action.text - the text associated with the action
- \endlist
+ \list
+ \o \c slot action.trigger - invoke the action
+ \o \c bool action.enabled - true if the action is enabled
+ \o \c string action.text - the text associated with the action
+ \endlist
- Actions are used like this:
+ Actions are used like this:
- \qml
- MouseArea { onClicked: myaction.trigger() }
- State { name: "enabled"; when: myaction.enabled == true }
- Text { text: someaction.text }
- \endqml
+ \qml
+ MouseArea { onClicked: myaction.trigger() }
+ State { name: "enabled"; when: myaction.enabled == true }
+ Text { text: someaction.text }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype list
- \ingroup qmlbasictypes
-
- \brief A list of objects.
-
- A list of objects. While not technically a basic type, QML also
- supports lists of object types. When used from QML, the engine
- automatically appends each value to the list.
-
- For example, the \l Item class contains a list property named
- children that can be used like this:
-
- \qml
- Item {
- children: [
- Item { id: child1 },
- Rectangle { id: child2 },
- Text { id: child3 }
- ]
- }
- \endqml
- \c child1, \c child2 and \c child3 will all be added to the children list
- in the order in which they appear.
-
- \sa {QML Basic Types}
+ \qmlbasictype list
+ \ingroup qmlbasictypes
+
+ \brief A list of objects.
+
+ A list of objects. While not technically a basic type, QML also
+ supports lists of object types. When used from QML, the engine
+ automatically appends each value to the list.
+
+ For example, the \l Item class contains a list property named
+ children that can be used like this:
+
+ \qml
+ Item {
+ children: [
+ Item { id: child1 },
+ Rectangle { id: child2 },
+ Text { id: child3 }
+ ]
+ }
+ \endqml
+ \c child1, \c child2 and \c child3 will all be added to the children list
+ in the order in which they appear.
+
+ \sa {QML Basic Types}
*/
/*!
- \qmlbasictype vector3d
- \ingroup qmlbasictypes
+ \qmlbasictype vector3d
+ \ingroup qmlbasictypes
- \brief A vector3d is specified as "x,y,z".
+ \brief A vector3d type has x, y, and z attributes.
- A vector3d is specified as "x,y,z".
+ A \c vector3d type has \c x, \c y, and \c z attributes.
- \qml
- Rotation { angle: 60; axis: "0,1,0" }
- \endqml
+ To create a \c vector3d value, specify it as a "x,y,z" string:
- or with the \c{Qt.vector3d()} function:
+ \qml
+ Rotation { angle: 60; axis: "0,1,0" }
+ \endqml
- \qml
- Rotation { angle: 60; axis: Qt.vector3d(0, 1, 0) }
- \endqml
+ or with the \l{Qt::vector3d()}{Qt.vector3d()} function:
- or as separate \c x, \c y, and \c z components:
+ \qml
+ Rotation { angle: 60; axis: Qt.vector3d(0, 1, 0) }
+ \endqml
- \qml
- Rotation { angle: 60; axis.x: 0; axis.y: 1; axis.z: 0 }
- \endqml
+ or as separate \c x, \c y, and \c z components:
- A vector3d object has \c x, \c, y, and \c z attributes that contain the
- \c x, \c y, \c z values.
+ \qml
+ Rotation { angle: 60; axis.x: 0; axis.y: 1; axis.z: 0 }
+ \endqml
- \sa {QML Basic Types}
+ \sa {QML Basic Types}
*/
diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc
index 1199b26..7a49d0a 100644
--- a/doc/src/declarative/declarativeui.qdoc
+++ b/doc/src/declarative/declarativeui.qdoc
@@ -118,6 +118,7 @@ application or to build completely new applications. QML is fully \l
\o \l {QML Security}
\o \l {QtDeclarative Module}
\o \l {Debugging QML}
+\o \l {QML Performance}
\o \l {QML Coding Conventions}
\endlist
*/
diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc
index 574a187..31fa948 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -59,8 +59,8 @@ The following table lists the QML elements provided by the \l {QtDeclarative}{Qt
\o \l State
\o \l PropertyChanges
\o \l StateGroup
+\o \l StateChangeScript
\o \l ParentChange (Item-specific)
-\o \l StateChangeScript (Item-specific)
\o \l AnchorChanges (Item-specific)
\endlist
@@ -76,6 +76,7 @@ The following table lists the QML elements provided by the \l {QtDeclarative}{Qt
\o \l ParentAnimation
\o \l AnchorAnimation
\o \l SmoothedAnimation
+\o \l Vector3dAnimation
\o \l PropertyAction
\o \l ScriptAction
\o \l Transition
@@ -167,8 +168,8 @@ The following table lists the QML elements provided by the \l {QtDeclarative}{Qt
\header
\o \bold {Views}
\o \bold {Positioners}
-\o \bold {Media}
\o \bold {Effects}
+\o
\row
\o
@@ -201,13 +202,6 @@ The following table lists the QML elements provided by the \l {QtDeclarative}{Qt
\o
\list
-\o \l SoundEffect
-\o \l Audio
-\o \l Video
-\endlist
-
-\o
-\list
\o \l Particles (experimental)
\list
\o \l ParticleMotionLinear
diff --git a/doc/src/declarative/examples.qdoc b/doc/src/declarative/examples.qdoc
index 8f39685..ad8c10c 100644
--- a/doc/src/declarative/examples.qdoc
+++ b/doc/src/declarative/examples.qdoc
@@ -79,6 +79,7 @@ For example, from your build directory, run:
\section2 Image Elements
\list
\o \l{declarative/imageelements/borderimage}{BorderImage}
+\o \l{declarative/imageelements/image}{Image}
\endlist
\section2 Positioners
@@ -117,6 +118,7 @@ For example, from your build directory, run:
\o \l{declarative/modelviews/package}{Package}
\o \l{declarative/modelviews/parallax}{Parallax}
\o \l{declarative/modelviews/stringlistmodel}{String ListModel}
+\o \l{declarative/modelviews/visualitemmodel}{VisualItemModel}
\o \l{declarative/modelviews/webview}{WebView}
\endlist
diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc
index af5b437..03c0ec4 100644
--- a/doc/src/declarative/extending.qdoc
+++ b/doc/src/declarative/extending.qdoc
@@ -899,9 +899,13 @@ in other projects without the use of C++. Components can also help to reduce
duplication inside one project by limiting the need for large numbers of
copy-and-pasted blocks.
-Any snippet of QML code can become a component, just by placing it in the file
-"<Name>.qml" where <Name> is the new element name, and begins with an uppercase
-letter. These QML files automatically become available as new QML element types
+Any snippet of QML code can become a component, just by placing it in the file "<Name>.qml"
+where <Name> is the new element name, and begins with an uppercase letter. Note that
+the case of all characters in the <Name> are significant on some filesystems, notably
+UNIX filesystems. It is recommended that the case of the filename matches the case of
+the component name in QML exactly, regardless of the platform the QML will be deployed to.
+
+These QML files automatically become available as new QML element types
to other QML components and applications in the same directory.
For example, here we show how a component named "Box" is defined and used
diff --git a/doc/src/declarative/pics/anchorchanges.png b/doc/src/declarative/pics/anchorchanges.png
new file mode 100644
index 0000000..4973e4e
--- /dev/null
+++ b/doc/src/declarative/pics/anchorchanges.png
Binary files differ
diff --git a/doc/src/declarative/pics/gridview-highlight.png b/doc/src/declarative/pics/gridview-highlight.png
new file mode 100644
index 0000000..b54af37
--- /dev/null
+++ b/doc/src/declarative/pics/gridview-highlight.png
Binary files differ
diff --git a/doc/src/declarative/pics/gridview-simple.png b/doc/src/declarative/pics/gridview-simple.png
new file mode 100644
index 0000000..a102939
--- /dev/null
+++ b/doc/src/declarative/pics/gridview-simple.png
Binary files differ
diff --git a/doc/src/declarative/pics/gridview.png b/doc/src/declarative/pics/gridview.png
deleted file mode 100644
index 3726893..0000000
--- a/doc/src/declarative/pics/gridview.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/declarative/pics/listmodel-nested.png b/doc/src/declarative/pics/listmodel-nested.png
new file mode 100644
index 0000000..ee7ffba
--- /dev/null
+++ b/doc/src/declarative/pics/listmodel-nested.png
Binary files differ
diff --git a/doc/src/declarative/pics/listmodel.png b/doc/src/declarative/pics/listmodel.png
new file mode 100644
index 0000000..7ab1771
--- /dev/null
+++ b/doc/src/declarative/pics/listmodel.png
Binary files differ
diff --git a/doc/src/declarative/pics/parentchange.png b/doc/src/declarative/pics/parentchange.png
new file mode 100644
index 0000000..93206fb
--- /dev/null
+++ b/doc/src/declarative/pics/parentchange.png
Binary files differ
diff --git a/doc/src/declarative/pics/repeater-simple.png b/doc/src/declarative/pics/repeater-simple.png
new file mode 100644
index 0000000..6da6295
--- /dev/null
+++ b/doc/src/declarative/pics/repeater-simple.png
Binary files differ
diff --git a/doc/src/declarative/pics/translate.png b/doc/src/declarative/pics/translate.png
new file mode 100644
index 0000000..baf58b0
--- /dev/null
+++ b/doc/src/declarative/pics/translate.png
Binary files differ
diff --git a/doc/src/declarative/pics/visualitemmodel.png b/doc/src/declarative/pics/visualitemmodel.png
new file mode 100644
index 0000000..5e6d132
--- /dev/null
+++ b/doc/src/declarative/pics/visualitemmodel.png
Binary files differ
diff --git a/doc/src/declarative/qdeclarativedocument.qdoc b/doc/src/declarative/qdeclarativedocument.qdoc
index bc099ce..8336512 100644
--- a/doc/src/declarative/qdeclarativedocument.qdoc
+++ b/doc/src/declarative/qdeclarativedocument.qdoc
@@ -96,9 +96,6 @@ Once created, instances are not dependent on the component that created them, so
operate on independent data. Here is an example of a simple "Button" component that is
instantiated four times, each with a different value for its \c text property.
-\table
-\row
-\o
\raw HTML
<table><tr><td>
\endraw
@@ -125,10 +122,19 @@ BorderImage {
\raw HTML
</td> </tr> </table>
\endraw
-\endtable
-In addition to the top-level component that all QML documents define, documents may also
-include additional \e inline components. Inline components are declared using the
+Any snippet of QML code can become a component, just by placing it in the file "<Name>.qml"
+where <Name> is the new element name, and begins with an uppercase letter. Note that
+the case of all characters in the <Name> are significant on some filesystems, notably
+UNIX filesystems. It is recommended that the case of the filename matches the case of
+the component name in QML exactly, regardless of the platform the QML will be deployed to.
+
+These QML files automatically become available as new QML element types
+to other QML components and applications in the same directory.
+
+In addition to the top-level component that all QML documents define, and any reusable
+components placed in separate files, documents may also
+include \e inline components. Inline components are declared using the
\l Component element, as can be seen in the first example above. Inline components share
all the characteristics of regular top-level components and use the same \c import list as their
containing QML document. Components are one of the most basic building blocks in QML, and are
diff --git a/doc/src/declarative/qdeclarativeperformance.qdoc b/doc/src/declarative/qdeclarativeperformance.qdoc
new file mode 100644
index 0000000..b535e4b
--- /dev/null
+++ b/doc/src/declarative/qdeclarativeperformance.qdoc
@@ -0,0 +1,120 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\page qdeclarativeperformance.html
+\title QML Performance
+
+\section1 Opaque Items
+
+Items hidden behind an opaque item incur a cost. If an item will be enitrely
+obscured by an opaque item, set its opacity to 0. One common example of
+this is when a "details" page is shown over the main application view.
+
+\section1 Clipping
+
+\e clip is set to false by default. Enable clipping only when necessary.
+
+\section1 Anchors vs. Binding
+
+It is more efficient to use anchors rather than bindings to position items
+relative to each other. Consider this use of bindings to position rect2
+relative to rect1:
+
+\code
+Rectangle {
+ id: rect1
+ x: 20
+ width: 200; height: 200
+}
+Rectange {
+ id: rect2
+ x: rect1.x
+ y: rect1.y + rect1.height
+ width: rect1.width - 20
+ height: 200
+}
+\endcode
+
+This is achieved more efficiently using anchors:
+
+\code
+Rectangle {
+ id: rect1
+ x: 20
+ width: 200; height: 200
+}
+Rectange {
+ id: rect2
+ height: 200
+ anchors.left: rect1.left
+ anchors.top: rect1.bottom
+ anchors.right: rect1.right
+ anchors.rightMargin: 20
+}
+\endcode
+
+\section1 Images
+
+Images consume a great deal of memory and may also be costly to load. In order
+to deal with large images efficiently it is recommended that the Image::sourceSize
+property be set to a size no greater than that necessary to render it. Beware that
+changing the sourceSize will cause the image to be reloaded.
+
+Images on the local filesystem are usually loaded synchronously. This is usually
+the desired behavior for user interface elements, however for large images that
+do not necessarily need to be visible immediately, set the Image::asynchronous
+property to true. This will load the image in a low priority thread.
+
+\section1 View Delegates
+
+Delegates must be created quickly as the view is flicked. There are two important
+aspects to maintaining a smooth view:
+
+\list
+\o Small delegates - keep the amount of QML to a minimum. Have just enough
+QML in the delegate to display the necessary information. Any additional functionality
+that is only needed when the delegate is clicked, for example, should be created by
+a Loader as needed.
+\o Fast data access - ensure the data model is as fast as possible.
+\endlist
+
+*/
diff --git a/doc/src/declarative/qdeclarativestates.qdoc b/doc/src/declarative/qdeclarativestates.qdoc
index fd0c677..43b5c31 100644
--- a/doc/src/declarative/qdeclarativestates.qdoc
+++ b/doc/src/declarative/qdeclarativestates.qdoc
@@ -70,58 +70,30 @@ In QML:
\o A state can affect the properties of other objects, not just the object owning the state (and not just that object's children).
\endlist
+To define a state for an item, add a \l State element to the \l{Item::states}{states} property. To
+change the current state of an \l Item, set the \l{Item::state}{state} property to the name
+of the required state.
+
Here is an example of using states. In the default state \c myRect is positioned at 0,0. In the 'moved' state it is positioned at 50,50. Clicking within the mouse area changes the state from the default state to the 'moved' state, thus moving the rectangle.
-\qml
-Item {
- id: myItem
-
- Rectangle {
- id: myRect
- width: 100
- height: 100
- color: "red"
- }
-
- states: [
- State {
- name: "moved"
- PropertyChanges {
- target: myRect
- x: 50
- y: 50
- }
- }
- ]
-
- MouseArea {
- anchors.fill: parent
- onClicked: myItem.state = 'moved'
- }
-}
-\endqml
+\snippet doc/src/snippets/declarative/states.qml 0
+\snippet doc/src/snippets/declarative/states.qml 1
State changes can be animated using \l{state-transitions}{Transitions}.
-For example, adding this code to the above \c {Item {}} element animates the transition to the "moved" state:
+For example, adding this code to the above \c Item element animates the transition to the "moved" state:
-\qml
- transitions: [
- Transition {
- NumberAnimation { properties: "x,y"; duration: 500 }
- }
- ]
-\endqml
+\snippet doc/src/snippets/declarative/states.qml transitions
See \l{state-transitions}{Transitions} for more information.
Other things you can do in a state change:
\list
-\o override signal handlers with PropertyChanges
-\o change an item's visual parent with ParentChange
-\o change an item's anchors with AnchorChanges
-\o run some script with StateChangeScript
+\o Override signal handlers with PropertyChanges
+\o Change an item's visual parent with ParentChange
+\o Change an item's anchors with AnchorChanges
+\o Run some script with StateChangeScript
\endlist
*/
diff --git a/doc/src/declarative/qmlruntime.qdoc b/doc/src/declarative/qmlruntime.qdoc
index cef5e63..66b4b2b 100644
--- a/doc/src/declarative/qmlruntime.qdoc
+++ b/doc/src/declarative/qmlruntime.qdoc
@@ -152,7 +152,7 @@
\section2 Runtime Object
- All applications using the launcher will have access to the 'runtime'
+ All applications using the launcher will have access to the \c runtime
property on the root context. This property contains several pieces of
information about the runtime environment of the application.
@@ -160,11 +160,19 @@
A special piece of dummy data which is integrated into the launcher is
a simple orientation property. The orientation can be set via the
- settings menu in the application, or by pressing Ctrl+T to toggle it.
+ settings menu in the application, or by pressing Ctrl+T to rotate it.
- To use this from within your QML file, access runtime.orientation,
- which can be either Orientation.Landscape or Orientation.Portrait and which can be bound to in your
- application. An example is below:
+ To use this from within your QML file, access \c runtime.orientation,
+ which can be one of the following values:
+
+ \list
+ \o \c Orientation.Portrait
+ \o \c Orientation.Landscape
+ \o \c Orientation.PortraitInverted (Portrait orientation, upside-down)
+ \o \c Orientation.LandscapeInverted (Landscape orientation, upside-down)
+ \endlist
+
+ These values can be bound to in your application. For example:
\code
Item {
@@ -172,13 +180,13 @@
}
\endcode
- This allows your application to respond to the orientation of the screen changing. The launcher
+ This allows your application to respond to changes in the screen's orientation. The launcher
will automatically update this on some platforms (currently the N900 only) to match the physical
screen's orientation. On other plaforms orientation changes will only happen when explictly asked for.
\section3 Window Active
- The runtime.isActiveWindow property tells whether the main window of the launcher is currently active
+ The \c runtime.isActiveWindow property tells whether the main window of the launcher is currently active
or not. This is especially useful for embedded devices when you want to pause parts of your application,
including animations, when your application loses focus or goes to the background.
diff --git a/doc/src/examples/qml-examples.qdoc b/doc/src/examples/qml-examples.qdoc
index 035628e..b6069f2 100644
--- a/doc/src/examples/qml-examples.qdoc
+++ b/doc/src/examples/qml-examples.qdoc
@@ -75,6 +75,15 @@
*/
/*!
+ \title Image Elements: Image
+ \example declarative/imageelements/image
+
+ This example shows how to use the Image element and its \l{Image::fillMode}{fillModes}.
+
+ \image qml-image-example.png
+*/
+
+/*!
\page declarative-cppextensions-reference.html
\title C++ Extensions: Reference examples
@@ -238,6 +247,13 @@
*/
/*!
+ \title Models and Views: VisualItemModel
+ \example declarative/modelviews/visualitemmodel
+
+ This example shows how to use the VisualItemModel element.
+*/
+
+/*!
\title Models and Views: WebView
\example declarative/modelviews/webview
diff --git a/doc/src/examples/waitconditions.qdoc b/doc/src/examples/waitconditions.qdoc
index 1d3ff84..d4f680e 100644
--- a/doc/src/examples/waitconditions.qdoc
+++ b/doc/src/examples/waitconditions.qdoc
@@ -92,7 +92,7 @@
Together, the wait conditions, the mutex, and the \c numUsedBytes
counter ensure that the producer is never more than \c BufferSize
bytes ahead of the consumer, and that the consumer never reads
- data that the consumer hasn't generated yet.
+ data that the producer hasn't generated yet.
\section1 Producer Class
diff --git a/doc/src/howtos/openvg.qdoc b/doc/src/howtos/openvg.qdoc
index e448d9c..f4a34cd 100644
--- a/doc/src/howtos/openvg.qdoc
+++ b/doc/src/howtos/openvg.qdoc
@@ -262,7 +262,10 @@
The QVG_SCISSOR_CLIP define will disable clipping with vgMask() or
vgRenderToMask() and instead use the scissor rectangle list to perform
- clipping. Clipping with an arbitrary QPainterPath will not be supported.
+ clipping. Clipping with an arbitrary QPainterPath will need to convert
+ the path into a series of rectangles. If the number of rectangles
+ exceeds VG_MAX_SCISSOR_RECTS, then the results will not be exact.
+
The QVG_SCISSOR_CLIP define should only be used if the OpenVG engine
does not support vgMask() or vgRenderToMask().
diff --git a/doc/src/images/qml-image-example.png b/doc/src/images/qml-image-example.png
new file mode 100644
index 0000000..c1951c0
--- /dev/null
+++ b/doc/src/images/qml-image-example.png
Binary files differ
diff --git a/doc/src/internationalization/linguist-manual.qdoc b/doc/src/internationalization/linguist-manual.qdoc
index 424dec2..4493deb 100644
--- a/doc/src/internationalization/linguist-manual.qdoc
+++ b/doc/src/internationalization/linguist-manual.qdoc
@@ -252,6 +252,9 @@
can also process Localization Interchange File Format (XLIFF)
format files; files in this format typically have file names that
end with the \c .xlf suffix.
+
+ \note The minimum supported version for XLIFF format files is
+ 1.1. XLIFF 1.0 version files are not supported.
Pass the \c -help option to \c lupdate to obtain the list of
supported options:
@@ -962,8 +965,10 @@
application.
\o \c .xlf \e {XLIFF files} \BR are human-readable XML files that adhere
to the international XML Localization Interchange File Format. \QL
- can be used to edit XLIFF files generated by other programs. For standard
- Qt projects, however, only the TS file format is used.
+ can be used to edit XLIFF files generated by other programs. However, for
+ standard Qt projects, only the TS file format is used. \note The minimum
+ supported version for XLIFF format files is 1.1. XLIFF 1.0 version files
+ are not supported.
\o QM \e {Qt message files} \BR are binary files that contain
translations used by an application at run-time. These files are
generated by \l lrelease, but can also be generated by \QL.
diff --git a/doc/src/platforms/emb-openvg.qdocinc b/doc/src/platforms/emb-openvg.qdocinc
index 579af67..877d70c 100644
--- a/doc/src/platforms/emb-openvg.qdocinc
+++ b/doc/src/platforms/emb-openvg.qdocinc
@@ -225,7 +225,9 @@ The QVG_NO_RENDER_TO_MASK define will disable the use of vgRenderToMask().
The QVG_SCISSOR_CLIP define will disable clipping with vgMask() or
vgRenderToMask() and instead use the scissor rectangle list to perform
-clipping. Clipping with an arbitrary QPainterPath will not be supported.
+clipping. Clipping with an arbitrary QPainterPath will need to convert
+the path into a series of rectangles. If the number of rectangles
+exceeds VG_MAX_SCISSOR_RECTS, then the results will not be exact.
The QVG_SCISSOR_CLIP define should only be used if the OpenVG engine does
not support vgMask() or vgRenderToMask().
diff --git a/doc/src/snippets/declarative/anchorchanges.qml b/doc/src/snippets/declarative/anchorchanges.qml
new file mode 100644
index 0000000..993618b
--- /dev/null
+++ b/doc/src/snippets/declarative/anchorchanges.qml
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Qt 4.7
+
+Rectangle {
+ id: window
+ width: 120; height: 120
+ color: "black"
+
+ Rectangle { id: myRect; width: 50; height: 50; color: "red" }
+
+ states: State {
+ name: "reanchored"
+
+ AnchorChanges {
+ target: myRect
+ anchors.top: window.top
+ anchors.bottom: window.bottom
+ }
+ PropertyChanges {
+ target: myRect
+ anchors.topMargin: 10
+ anchors.bottomMargin: 10
+ }
+ }
+
+ MouseArea { anchors.fill: parent; onClicked: window.state = "reanchored" }
+}
+//![0]
+
diff --git a/doc/src/snippets/declarative/animation.qml b/doc/src/snippets/declarative/animation.qml
new file mode 100644
index 0000000..65acd36
--- /dev/null
+++ b/doc/src/snippets/declarative/animation.qml
@@ -0,0 +1,181 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import Qt 4.7
+
+Row {
+
+//![property-anim-1]
+Rectangle {
+ id: rect
+ width: 120; height: 200
+
+ Image {
+ id: img
+ source: "pics/qt.png"
+ x: 60 - img.width/2
+ y: 0
+
+ SequentialAnimation on y {
+ loops: Animation.Infinite
+ NumberAnimation { to: 200 - img.height; easing.type: Easing.OutBounce; duration: 2000 }
+ PauseAnimation { duration: 1000 }
+ NumberAnimation { to: 0; easing.type: Easing.OutQuad; duration: 1000 }
+ }
+ }
+}
+//![property-anim-1]
+
+//![property-anim-2]
+Rectangle {
+ width: 200; height: 200
+
+ Rectangle {
+ color: "red"
+ width: 50; height: 50
+ NumberAnimation on x { to: 50 }
+ }
+}
+//![property-anim-2]
+
+
+Item {
+//![property-anim-3]
+PropertyAnimation {
+ id: animation
+ target: image
+ property: "scale"
+ from: 1; to: 0.5
+}
+
+Image {
+ id: image
+ source: "pics/qt.png"
+ MouseArea {
+ anchors.fill: parent
+ onPressed: animation.start()
+ }
+}
+//![property-anim-3]
+}
+
+
+//![transitions-1]
+transitions: [
+ Transition {
+ NumberAnimation {
+ properties: "x,y"
+ easing.type: Easing.OutBounce
+ duration: 200
+ }
+ }
+]
+//![transitions-1]
+
+
+//![transitions-2]
+Transition {
+ from: "*"
+ to: "MyState"
+ reversible: true
+
+ SequentialAnimation {
+ NumberAnimation {
+ duration: 1000
+ easing.type: Easing.OutBounce
+
+ // animate myItem's x and y if they have changed in the state
+ target: myItem
+ properties: "x,y"
+ }
+
+ NumberAnimation {
+ duration: 1000
+
+ // animate myItem2's y to 200, regardless of what happens in the state
+ target: myItem2
+ property: "y"
+ to: 200
+ }
+ }
+}
+//![transitions-2]
+
+
+//![transitions-3]
+Transition {
+ from: "*"
+ to: "MyState"
+ reversible: true
+
+ SequentialAnimation {
+ ColorAnimation { duration: 1000 }
+ PauseAnimation { duration: 1000 }
+
+ ParallelAnimation {
+ NumberAnimation {
+ duration: 1000
+ easing.type: Easing.OutBounce
+ targets: box1
+ properties: "x,y"
+ }
+ NumberAnimation {
+ duration: 1000
+ targets: box2
+ properties: "x,y"
+ }
+ }
+ }
+}
+//![transitions-3]
+
+//![behavior]
+Rectangle {
+ id: redRect
+ color: "red"
+ width: 100; height: 100
+
+ Behavior on x {
+ NumberAnimation { duration: 300; easing.type: Easing.InOutQuad }
+ }
+}
+//![behavior]
+
+}
diff --git a/doc/src/snippets/declarative/createQmlObject.qml b/doc/src/snippets/declarative/createQmlObject.qml
index f2ac6e6..f274e40 100644
--- a/doc/src/snippets/declarative/createQmlObject.qml
+++ b/doc/src/snippets/declarative/createQmlObject.qml
@@ -42,7 +42,7 @@
import Qt 4.7
Rectangle {
- id: targetItem
+ id: parentItem
property QtObject newObject
width: 100
@@ -51,7 +51,7 @@ Rectangle {
function createIt() {
//![0]
newObject = Qt.createQmlObject('import Qt 4.7; Rectangle {color: "red"; width: 20; height: 20}',
- targetItem, "dynamicSnippet1");
+ parentItem, "dynamicSnippet1");
//![0]
}
diff --git a/doc/src/snippets/declarative/gridview/dummydata/ContactModel.qml b/doc/src/snippets/declarative/gridview/ContactModel.qml
index 1e79030..2da4660 100644
--- a/doc/src/snippets/declarative/gridview/dummydata/ContactModel.qml
+++ b/doc/src/snippets/declarative/gridview/ContactModel.qml
@@ -39,28 +39,26 @@
**
****************************************************************************/
+//![0]
import Qt 4.7
ListModel {
- id: contactModel
+
ListElement {
- name: "Bill Smith"
- number: "555 3264"
+ name: "Jim Williams"
portrait: "pics/portrait.png"
}
ListElement {
- name: "Jim Williams"
- number: "555 5673"
+ name: "John Brown"
portrait: "pics/portrait.png"
}
ListElement {
- name: "John Brown"
- number: "555 8426"
+ name: "Bill Smyth"
portrait: "pics/portrait.png"
}
ListElement {
name: "Sam Wise"
- number: "555 0473"
portrait: "pics/portrait.png"
}
}
+//![0]
diff --git a/doc/src/snippets/declarative/gridview/gridview.qml b/doc/src/snippets/declarative/gridview/gridview.qml
index 3c205bc..0b3bbf3 100644
--- a/doc/src/snippets/declarative/gridview/gridview.qml
+++ b/doc/src/snippets/declarative/gridview/gridview.qml
@@ -39,50 +39,98 @@
**
****************************************************************************/
+//![import]
import Qt 4.7
+//![import]
-//! [3]
Rectangle {
- width: 240; height: 180; color: "white"
- // ContactModel model is defined in dummydata/ContactModel.qml
- // The viewer automatically loads files in dummydata/* to assist
- // development without a real data source.
-
- // Define a delegate component. A component will be
- // instantiated for each visible item in the list.
-//! [0]
+ width: childrenRect.width; height: childrenRect.height
+
+Row {
+
+//![classdocs simple]
+GridView {
+ width: 300; height: 200
+
+ model: ContactModel {}
+ delegate: Column {
+ Image { source: portrait; anchors.horizontalCenter: parent.horizontalCenter }
+ Text { text: name; anchors.horizontalCenter: parent.horizontalCenter }
+ }
+}
+//![classdocs simple]
+
+
+//![classdocs advanced]
+Rectangle {
+ width: 300; height: 200
+
Component {
- id: delegate
+ id: contactDelegate
Item {
- id: wrapper
- width: 80; height: 78
+ width: grid.cellWidth; height: grid.cellHeight
Column {
+ anchors.fill: parent
Image { source: portrait; anchors.horizontalCenter: parent.horizontalCenter }
Text { text: name; anchors.horizontalCenter: parent.horizontalCenter }
}
}
}
-//! [0]
- // Define a highlight component. Just one of these will be instantiated
- // by each ListView and placed behind the current item.
-//! [1]
- Component {
- id: highlight
- Rectangle {
- color: "lightsteelblue"
- radius: 5
- }
- }
-//! [1]
- // The actual grid
-//! [2]
+
GridView {
- width: parent.width; height: parent.height
- model: ContactModel; delegate: delegate
+ id: grid
+ anchors.fill: parent
cellWidth: 80; cellHeight: 80
- highlight: highlight
+
+ model: ContactModel {}
+ delegate: contactDelegate
+ highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
focus: true
}
-//! [2]
}
-//! [3]
+//![classdocs advanced]
+
+//![delayRemove]
+Component {
+ id: delegate
+ Item {
+ GridView.onRemove: SequentialAnimation {
+ PropertyAction { target: wrapper; property: "GridView.delayRemove"; value: true }
+ NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing.type: Easing.InOutQuad }
+ PropertyAction { target: wrapper; property: "GridView.delayRemove"; value: false }
+ }
+ }
+}
+//![delayRemove]
+
+//![highlightFollowsCurrentItem]
+Component {
+ id: highlight
+ Rectangle {
+ width: view.cellWidth; height: view.cellHeight
+ color: "lightsteelblue"; radius: 5
+ SpringFollow on x { to: view.currentItem.x; spring: 3; damping: 0.2 }
+ SpringFollow on y { to: view.currentItem.y; spring: 3; damping: 0.2 }
+ }
+}
+
+GridView {
+ id: view
+ width: 300; height: 200
+ cellWidth: 80; cellHeight: 80
+
+ model: ContactModel {}
+ delegate: Column {
+ Image { source: portrait; anchors.horizontalCenter: parent.horizontalCenter }
+ Text { text: name; anchors.horizontalCenter: parent.horizontalCenter }
+ }
+
+ highlight: highlight
+ highlightFollowsCurrentItem: false
+ focus: true
+}
+//![highlightFollowsCurrentItem]
+
+}
+
+}
diff --git a/doc/src/snippets/declarative/listmodel-modify.qml b/doc/src/snippets/declarative/listmodel-modify.qml
new file mode 100644
index 0000000..03fb314
--- /dev/null
+++ b/doc/src/snippets/declarative/listmodel-modify.qml
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import Qt 4.7
+
+Rectangle {
+ width: 200; height: 200
+
+ListModel {
+ id: fruitModel
+
+ ListElement {
+ name: "Apple"
+ cost: 2.45
+ attributes: [
+ ListElement { description: "Core" },
+ ListElement { description: "Deciduous" }
+ ]
+ }
+ ListElement {
+ name: "Orange"
+ cost: 3.25
+ attributes: [
+ ListElement { description: "Citrus" }
+ ]
+ }
+ ListElement {
+ name: "Banana"
+ cost: 1.95
+ attributes: [
+ ListElement { description: "Tropical" },
+ ListElement { description: "Seedless" }
+ ]
+ }
+}
+
+//![delegate]
+ Component {
+ id: fruitDelegate
+ Item {
+ width: 200; height: 50
+ Text { text: name }
+ Text { text: '$' + cost; anchors.right: parent.right }
+
+ // Double the price when clicked.
+ MouseArea {
+ anchors.fill: parent
+ onClicked: fruitModel.setProperty(index, "cost", cost * 2)
+ }
+ }
+ }
+//![delegate]
+
+ListView {
+ width: 200; height: 200
+ model: fruitModel
+ delegate: fruitDelegate
+}
+
+}
diff --git a/doc/src/snippets/declarative/listmodel-nested.qml b/doc/src/snippets/declarative/listmodel-nested.qml
new file mode 100644
index 0000000..4ae43ff
--- /dev/null
+++ b/doc/src/snippets/declarative/listmodel-nested.qml
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import Qt 4.7
+
+Rectangle {
+ width: 200; height: 200
+
+
+//![model]
+ListModel {
+ id: fruitModel
+
+ ListElement {
+ name: "Apple"
+ cost: 2.45
+ attributes: [
+ ListElement { description: "Core" },
+ ListElement { description: "Deciduous" }
+ ]
+ }
+ ListElement {
+ name: "Orange"
+ cost: 3.25
+ attributes: [
+ ListElement { description: "Citrus" }
+ ]
+ }
+ ListElement {
+ name: "Banana"
+ cost: 1.95
+ attributes: [
+ ListElement { description: "Tropical" },
+ ListElement { description: "Seedless" }
+ ]
+ }
+}
+//![model]
+
+//![delegate]
+Component {
+ id: fruitDelegate
+ Item {
+ width: 200; height: 50
+ Text { id: nameField; text: name }
+ Text { text: '$' + cost; anchors.left: nameField.right }
+ Row {
+ anchors.top: nameField.bottom
+ spacing: 5
+ Text { text: "Attributes:" }
+ Repeater {
+ model: attributes
+ Text { text: description }
+ }
+ }
+ }
+}
+//![delegate]
+
+ListView {
+ width: 200; height: 200
+ model: fruitModel
+ delegate: fruitDelegate
+}
+
+}
diff --git a/doc/src/snippets/declarative/listmodel-simple.qml b/doc/src/snippets/declarative/listmodel-simple.qml
new file mode 100644
index 0000000..00b8cb0
--- /dev/null
+++ b/doc/src/snippets/declarative/listmodel-simple.qml
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Qt 4.7
+
+Rectangle {
+ width: 200; height: 200
+
+ ListModel {
+ id: fruitModel
+//![0]
+ ListElement {
+ name: "Apple"
+ cost: 2.45
+ }
+ ListElement {
+ name: "Orange"
+ cost: 3.25
+ }
+ ListElement {
+ name: "Banana"
+ cost: 1.95
+ }
+//![1]
+ }
+
+ Component {
+ id: fruitDelegate
+ Row {
+ spacing: 10
+ Text { text: name }
+ Text { text: '$' + cost }
+ }
+ }
+
+ ListView {
+ anchors.fill: parent
+ model: fruitModel
+ delegate: fruitDelegate
+ }
+}
+//![1]
diff --git a/doc/src/snippets/declarative/listmodel.qml b/doc/src/snippets/declarative/listmodel.qml
new file mode 100644
index 0000000..91b8230
--- /dev/null
+++ b/doc/src/snippets/declarative/listmodel.qml
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Qt 4.7
+
+ListModel {
+ id: fruitModel
+
+ ListElement {
+ name: "Apple"
+ cost: 2.45
+ }
+ ListElement {
+ name: "Orange"
+ cost: 3.25
+ }
+ ListElement {
+ name: "Banana"
+ cost: 1.95
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/listview/highlight.qml b/doc/src/snippets/declarative/listview/highlight.qml
deleted file mode 100644
index af9e95f..0000000
--- a/doc/src/snippets/declarative/listview/highlight.qml
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-
-Rectangle {
- width: 180; height: 200; color: "white"
-
- // ContactModel model is defined in dummydata/ContactModel.qml
- // The viewer automatically loads files in dummydata/* to assist
- // development without a real data source.
-
- // Define a delegate component. A component will be
- // instantiated for each visible item in the list.
-//! [0]
- Component {
- id: delegate
- Item {
- id: wrapper
- width: 180; height: 40
- Column {
- x: 5; y: 5
- Text { text: '<b>Name:</b> ' + name }
- Text { text: '<b>Number:</b> ' + number }
- }
- // Use the ListView.isCurrentItem attached property to
- // indent the item if it is the current item.
- states: [
- State {
- name: "Current"
- when: wrapper.ListView.isCurrentItem
- PropertyChanges { target: wrapper; x: 10 }
- }
- ]
- transitions: [
- Transition { NumberAnimation { properties: "x"; duration: 200 } }
- ]
- }
- }
-//! [0]
- // Specify a highlight with custom movement. Note that autoHighlight
- // is set to false in the ListView so that we can control how the
- // highlight moves to the current item.
-//! [1]
- Component {
- id: highlight
- Rectangle {
- width: 180; height: 40
- color: "lightsteelblue"; radius: 5
- SpringFollow on y {
- to: list.currentItem.y
- spring: 3
- damping: 0.2
- }
- }
- }
- ListView {
- id: list
- width: parent.height; height: parent.height
- model: ContactModel; delegate: delegate
- highlight: highlight
- highlightFollowsCurrentItem: false
- focus: true
- }
-//! [1]
-}
diff --git a/doc/src/snippets/declarative/mousearea.qml b/doc/src/snippets/declarative/mousearea.qml
new file mode 100644
index 0000000..c6071c7
--- /dev/null
+++ b/doc/src/snippets/declarative/mousearea.qml
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//! [import]
+import Qt 4.7
+//! [import]
+
+Rectangle {
+ width: childrenRect.width
+ height: childrenRect.height
+
+Row {
+
+//! [intro]
+Rectangle {
+ width: 100; height: 100
+ color: "green"
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: { parent.color = 'red' }
+ }
+}
+//! [intro]
+
+//! [intro-extended]
+Rectangle {
+ width: 100; height: 100
+ color: "green"
+
+ MouseArea {
+ anchors.fill: parent
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+ onClicked: {
+ if (mouse.button == Qt.RightButton)
+ parent.color = 'blue';
+ else
+ parent.color = 'red';
+ }
+ }
+}
+//! [intro-extended]
+
+//! [drag]
+Rectangle {
+ id: container
+ width: 600; height: 200
+
+ Image {
+ id: pic
+ source: "pics/qt.png"
+ opacity: (600.0 - pic.x) / 600
+
+ MouseArea {
+ anchors.fill: parent
+ drag.target: pic
+ drag.axis: Drag.XAxis
+ drag.minimumX: 0
+ drag.maximumX: container.width - pic.width
+ }
+ }
+}
+//! [drag]
+
+//! [mousebuttons]
+Text {
+ text: mouseArea.pressedButtons & Qt.RightButton ? "right" : ""
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+ }
+}
+//! [mousebuttons]
+
+}
+
+}
diff --git a/doc/src/snippets/declarative/parentchange.qml b/doc/src/snippets/declarative/parentchange.qml
new file mode 100644
index 0000000..7f5718a
--- /dev/null
+++ b/doc/src/snippets/declarative/parentchange.qml
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Qt 4.7
+
+Rectangle {
+ width: 200
+ height: 100
+
+ Rectangle {
+ id: redRect
+ width: 100; height: 100
+ color: "red"
+ }
+
+ Rectangle {
+ id: blueRect
+ x: redRect.width
+ width: 50; height: 50
+ color: "blue"
+
+ states: State {
+ name: "reparented"
+ ParentChange { target: blueRect; parent: redRect; x: 10; y: 10 }
+ }
+
+ MouseArea { anchors.fill: parent; onClicked: blueRect.state = "reparented" }
+ }
+}
+//![0]
+
diff --git a/doc/src/snippets/declarative/pathview/dummydata/MenuModel.qml b/doc/src/snippets/declarative/pathview/ContactModel.qml
index a52b60a..1a042a3 100644
--- a/doc/src/snippets/declarative/pathview/dummydata/MenuModel.qml
+++ b/doc/src/snippets/declarative/pathview/ContactModel.qml
@@ -39,20 +39,21 @@
**
****************************************************************************/
+//![0]
import Qt 4.7
ListModel {
- id: menuModel
ListElement {
name: "Bill Jones"
- icon: "pics/qtlogo-64.png"
+ icon: "pics/qtlogo.png"
}
ListElement {
name: "Jane Doe"
- icon: "pics/qtlogo-64.png"
+ icon: "pics/qtlogo.png"
}
ListElement {
name: "John Smith"
- icon: "pics/qtlogo-64.png"
+ icon: "pics/qtlogo.png"
}
}
+//![0]
diff --git a/doc/src/snippets/declarative/pathview/pathattributes.qml b/doc/src/snippets/declarative/pathview/pathattributes.qml
index e8d2509..3ba3b95 100644
--- a/doc/src/snippets/declarative/pathview/pathattributes.qml
+++ b/doc/src/snippets/declarative/pathview/pathattributes.qml
@@ -39,16 +39,16 @@
**
****************************************************************************/
+//! [0]
import Qt 4.7
Rectangle {
- width: 240; height: 200; color: 'white'
-//! [0]
+ width: 240; height: 200
+
//! [1]
Component {
id: delegate
Item {
- id: wrapper
width: 80; height: 80
scale: PathView.scale
opacity: PathView.opacity
@@ -59,9 +59,12 @@ Rectangle {
}
}
//! [1]
+
//! [2]
PathView {
- anchors.fill: parent; model: MenuModel; delegate: delegate
+ anchors.fill: parent
+ model: ContactModel {}
+ delegate: delegate
path: Path {
startX: 120; startY: 100
PathAttribute { name: "scale"; value: 1.0 }
@@ -73,5 +76,5 @@ Rectangle {
}
}
//! [2]
-//! [0]
}
+//! [0]
diff --git a/doc/src/snippets/declarative/pathview/pathview.qml b/doc/src/snippets/declarative/pathview/pathview.qml
index 31b793d..1669847 100644
--- a/doc/src/snippets/declarative/pathview/pathview.qml
+++ b/doc/src/snippets/declarative/pathview/pathview.qml
@@ -39,27 +39,27 @@
**
****************************************************************************/
+//! [0]
import Qt 4.7
Rectangle {
- width: 240; height: 200; color: 'white'
-//! [0]
+ width: 240; height: 200
+
//! [1]
Component {
id: delegate
- Item {
- id: wrapper
- width: 80; height: 80
- Column {
- Image { anchors.horizontalCenter: name.horizontalCenter; width: 64; height: 64; source: icon }
- Text { text: name; font.pointSize: 16}
- }
+ Column {
+ Image { anchors.horizontalCenter: name.horizontalCenter; width: 64; height: 64; source: icon }
+ Text { text: name; font.pointSize: 16 }
}
}
//! [1]
+
//! [2]
PathView {
- anchors.fill: parent; model: MenuModel; delegate: delegate
+ anchors.fill: parent
+ model: ContactModel {}
+ delegate: delegate
path: Path {
startX: 120; startY: 100
PathQuad { x: 120; y: 25; controlX: 260; controlY: 75 }
@@ -67,5 +67,5 @@ Rectangle {
}
}
//! [2]
-//! [0]
}
+//! [0]
diff --git a/doc/src/snippets/declarative/pathview/pics/qtlogo-64.png b/doc/src/snippets/declarative/pathview/pics/qtlogo.png
index 4f68e16..4f68e16 100644
--- a/doc/src/snippets/declarative/pathview/pics/qtlogo-64.png
+++ b/doc/src/snippets/declarative/pathview/pics/qtlogo.png
Binary files differ
diff --git a/doc/src/snippets/declarative/repeater.qml b/doc/src/snippets/declarative/repeater.qml
index 8b4d9cb..be5d62d 100644
--- a/doc/src/snippets/declarative/repeater.qml
+++ b/doc/src/snippets/declarative/repeater.qml
@@ -39,19 +39,52 @@
**
****************************************************************************/
+//! [import]
import Qt 4.7
+//! [import]
-Rectangle {
- width: 220; height: 20; color: "white"
+Row {
-//! [0]
- Row {
- Rectangle { width: 10; height: 20; color: "red" }
- Repeater {
- model: 10
- Rectangle { width: 20; height: 20; radius: 10; color: "green" }
+//! [simple]
+Row {
+ Repeater {
+ model: 3
+ Rectangle {
+ width: 100; height: 40
+ border.width: 1
+ color: "yellow"
}
- Rectangle { width: 10; height: 20; color: "blue" }
}
-//! [0]
+}
+//! [simple]
+
+//! [index]
+Column {
+ Repeater {
+ model: 10
+ Text { text: "I'm item " + index }
+ }
+}
+//! [index]
+
+//! [modeldata]
+Column {
+ Repeater {
+ model: ["apples", "oranges", "pears"]
+ Text { text: "Data: " + modelData }
+ }
+}
+//! [modeldata]
+
+//! [layout]
+Row {
+ Rectangle { width: 10; height: 20; color: "red" }
+ Repeater {
+ model: 10
+ Rectangle { width: 20; height: 20; radius: 10; color: "green" }
+ }
+ Rectangle { width: 10; height: 20; color: "blue" }
+}
+//! [layout]
+
}
diff --git a/doc/src/snippets/declarative/rotation.qml b/doc/src/snippets/declarative/rotation.qml
index 0fb9a61..5437292 100644
--- a/doc/src/snippets/declarative/rotation.qml
+++ b/doc/src/snippets/declarative/rotation.qml
@@ -38,37 +38,33 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
+//! [0]
import Qt 4.7
-Rectangle {
- width: 360; height: 80
- color: "white"
-//! [0]
- Row {
- x: 10; y: 10
- spacing: 10
- Image { source: "pics/qt.png" }
- Image {
- source: "pics/qt.png"
- transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 18 }
- smooth: true
- }
- Image {
- source: "pics/qt.png"
- transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 36 }
- smooth: true
- }
- Image {
- source: "pics/qt.png"
- transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 54 }
- smooth: true
- }
- Image {
- source: "pics/qt.png"
- transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 72 }
- smooth: true
- }
+Row {
+ x: 10; y: 10
+ spacing: 10
+
+ Image { source: "pics/qt.png" }
+ Image {
+ source: "pics/qt.png"
+ transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 18 }
+ smooth: true
+ }
+ Image {
+ source: "pics/qt.png"
+ transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 36 }
+ smooth: true
+ }
+ Image {
+ source: "pics/qt.png"
+ transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 54 }
+ smooth: true
+ }
+ Image {
+ source: "pics/qt.png"
+ transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0; y: 1; z: 0 } angle: 72 }
+ smooth: true
}
-//! [0]
}
+//! [0]
diff --git a/doc/src/snippets/declarative/mouseregion.qml b/doc/src/snippets/declarative/state.qml
index a162854..a99c2e2 100644
--- a/doc/src/snippets/declarative/mouseregion.qml
+++ b/doc/src/snippets/declarative/state.qml
@@ -38,38 +38,32 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
+//![0]
import Qt 4.7
-Rectangle { width: 200; height: 100
-Row {
-//! [0]
-Rectangle {
- width: 100; height: 100
- color: "green"
-
- MouseArea {
- anchors.fill: parent
- onClicked: { parent.color = 'red' }
- }
-}
-//! [0]
-//! [1]
Rectangle {
+ id: myRect
width: 100; height: 100
- color: "green"
+ color: "black"
+
+ states: [
+ State {
+ name: "clicked"
+ PropertyChanges {
+ target: myRect
+ color: "red"
+ }
+ }
+ ]
MouseArea {
anchors.fill: parent
- acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
- if (mouse.button == Qt.RightButton)
- parent.color = 'blue';
+ if (myRect.state == "") // i.e. the default state
+ myRect.state = "clicked";
else
- parent.color = 'red';
+ myRect.state = "";
}
}
}
-//! [1]
-}
-}
+//![0]
diff --git a/doc/src/snippets/declarative/states.qml b/doc/src/snippets/declarative/states.qml
new file mode 100644
index 0000000..c3b1796
--- /dev/null
+++ b/doc/src/snippets/declarative/states.qml
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Qt 4.7
+
+Item {
+ id: myItem
+ width: 200; height: 200
+
+ Rectangle {
+ id: myRect
+ width: 100; height: 100
+ color: "red"
+ }
+
+ states: [
+ State {
+ name: "moved"
+ PropertyChanges {
+ target: myRect
+ x: 50
+ y: 50
+ }
+ }
+ ]
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: myItem.state = 'moved'
+ }
+//![0]
+
+//![transitions]
+transitions: [
+ Transition {
+ NumberAnimation { properties: "x,y"; duration: 500 }
+ }
+]
+//![transitions]
+
+//![1]
+}
+//![1]
diff --git a/doc/src/snippets/declarative/repeater-index.qml b/doc/src/snippets/declarative/systempalette.qml
index 3eee742..98b333e 100644
--- a/doc/src/snippets/declarative/repeater-index.qml
+++ b/doc/src/snippets/declarative/systempalette.qml
@@ -38,19 +38,18 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
+//![0]
import Qt 4.7
Rectangle {
- width: 50; height: childrenRect.height; color: "white"
+ SystemPalette { id: myPalette; colorGroup: SystemPalette.Active }
+
+ width: 640; height: 480
+ color: myPalette.window
-//! [0]
- Column {
- Repeater {
- model: 10
- Text { text: "I'm item " + index }
- }
+ Text {
+ anchors.fill: parent
+ text: "Hello!"; color: myPalette.windowText
}
-//! [0]
}
-
+//![0]
diff --git a/doc/src/snippets/declarative/drag.qml b/doc/src/snippets/declarative/visualdatamodel.qml
index 0a69574..cdde513 100644
--- a/doc/src/snippets/declarative/drag.qml
+++ b/doc/src/snippets/declarative/visualdatamodel.qml
@@ -38,22 +38,28 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
+//![0]
import Qt 4.7
-//! [0]
Rectangle {
- id: blurtest; width: 600; height: 200; color: "white"
- Image {
- id: pic; source: "qtlogo-64.png"; anchors.verticalCenter: parent.verticalCenter
- opacity: (600.0-pic.x) / 600;
- MouseArea {
- anchors.fill: parent
- drag.target: pic
- drag.axis: Drag.XAxis
- drag.minimumX: 0
- drag.maximumX: blurtest.width-pic.width
+ width: 200; height: 100
+
+ VisualDataModel {
+ id: visualModel
+ model: ListModel {
+ ListElement { name: "Apple" }
+ ListElement { name: "Orange" }
+ }
+ delegate: Rectangle {
+ height: 25
+ width: 100
+ Text { text: "Name: " + name}
}
}
+
+ ListView {
+ anchors.fill: parent
+ model: visualModel
+ }
}
-//! [0]
+//![0]
diff --git a/doc/src/snippets/declarative/visualdatamodel_rootindex/main.cpp b/doc/src/snippets/declarative/visualdatamodel_rootindex/main.cpp
new file mode 100644
index 0000000..174adee
--- /dev/null
+++ b/doc/src/snippets/declarative/visualdatamodel_rootindex/main.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDeclarativeView>
+#include <QDeclarativeContext>
+
+#include <QApplication>
+#include <QDirModel>
+
+//![0]
+int main(int argc, char ** argv)
+{
+ QApplication app(argc, argv);
+
+ QDeclarativeView view;
+
+ QDirModel model;
+ view.rootContext()->setContextProperty("dirModel", &model);
+
+ view.setSource(QUrl::fromLocalFile("view.qml"));
+ view.show();
+
+ return app.exec();
+}
+//![0]
+
diff --git a/doc/src/snippets/declarative/visualdatamodel_rootindex/view.qml b/doc/src/snippets/declarative/visualdatamodel_rootindex/view.qml
new file mode 100644
index 0000000..e623faa
--- /dev/null
+++ b/doc/src/snippets/declarative/visualdatamodel_rootindex/view.qml
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Qt 4.7
+
+ListView {
+ id: view
+ width: 300
+ height: 400
+
+ model: VisualDataModel {
+ model: dirModel
+
+ delegate: Rectangle {
+ width: 200; height: 25
+ Text { text: filePath }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ if (hasModelChildren)
+ view.model.rootIndex = view.model.modelIndex(index)
+ }
+ }
+ }
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/visualdatamodel_rootindex/visualdatamodel_rootindex.pro b/doc/src/snippets/declarative/visualdatamodel_rootindex/visualdatamodel_rootindex.pro
new file mode 100644
index 0000000..fec070c
--- /dev/null
+++ b/doc/src/snippets/declarative/visualdatamodel_rootindex/visualdatamodel_rootindex.pro
@@ -0,0 +1,4 @@
+TEMPLATE = app
+QT += gui declarative
+
+SOURCES += main.cpp
diff --git a/doc/src/snippets/qxmlschema/main.cpp b/doc/src/snippets/qxmlschema/main.cpp
index 83fb245..26a8741 100644
--- a/doc/src/snippets/qxmlschema/main.cpp
+++ b/doc/src/snippets/qxmlschema/main.cpp
@@ -91,11 +91,8 @@ void Schema::loadFromData() const
" elementFormDefault=\"qualified\">"
"</xsd:schema>" );
- QBuffer buffer(&data);
- buffer.open(QIODevice::ReadOnly);
-
QXmlSchema schema;
- schema.load(&buffer);
+ schema.load(data);
if (schema.isValid())
qDebug() << "schema is valid";
diff --git a/doc/src/template/images/arrow_down.png b/doc/src/template/images/arrow_down.png
new file mode 100644
index 0000000..9d01e97
--- /dev/null
+++ b/doc/src/template/images/arrow_down.png
Binary files differ
diff --git a/doc/src/template/images/bg_ll_blank.png b/doc/src/template/images/bg_ll_blank.png
new file mode 100644
index 0000000..95a1c45
--- /dev/null
+++ b/doc/src/template/images/bg_ll_blank.png
Binary files differ
diff --git a/doc/src/template/images/bg_ul_blank.png b/doc/src/template/images/bg_ul_blank.png
new file mode 100644
index 0000000..7051261
--- /dev/null
+++ b/doc/src/template/images/bg_ul_blank.png
Binary files differ
diff --git a/doc/src/template/images/header_bg.png b/doc/src/template/images/header_bg.png
new file mode 100644
index 0000000..a436aa6
--- /dev/null
+++ b/doc/src/template/images/header_bg.png
Binary files differ
diff --git a/doc/src/template/scripts/narrow.js b/doc/src/template/scripts/narrow.js
new file mode 100644
index 0000000..12d0ce8
--- /dev/null
+++ b/doc/src/template/scripts/narrow.js
@@ -0,0 +1,78 @@
+var narrowInit = function() {
+ /* TODO:
+ Could probably be more efficient, not hardcoding each element to be created
+ */
+ // 1: Create search form
+ var narrowSearch = $('<div id="narrowsearch"></div>');
+ var searchform = $("#qtdocsearch");
+ narrowSearch.append(searchform);
+ $("#qtdocheader .content .qtref").after(narrowSearch);
+
+ // 2: Create dropdowns
+ var narrowmenu = $('<ul id="narrowmenu" class="sf-menu"></ul>');
+
+ // Lookup
+ var lookuptext = $("#lookup h2").attr("title");
+ $("#lookup ul").removeAttr("id");
+ $("#lookup ul li").removeAttr("class");
+ $("#lookup ul li").removeAttr("style");
+ var lookupul = $("#lookup ul");
+ var lookuplist = $('<li></li>');
+ var lookuplink = $('<a href="#"></a>');
+ lookuplink.append(lookuptext);
+ lookuplist.append(lookuplink);
+ lookuplist.append(lookupul);
+ narrowmenu.append(lookuplist);
+
+ // Topics
+ var topicstext = $("#topics h2").attr("title");
+ $("#topics ul").removeAttr("id");
+ $("#topics ul li").removeAttr("class");
+ $("#topics ul li").removeAttr("style");
+ var topicsul = $("#topics ul");
+ var topicslist = $('<li></li>');
+ var topicslink = $('<a href="#"></a>');
+ topicslink.append(topicstext);
+ topicslist.append(topicslink);
+ topicslist.append(topicsul);
+ narrowmenu.append(topicslist);
+
+ // Examples
+ var examplestext = $("#examples h2").attr("title");
+ $("#examples ul").removeAttr("id");
+ $("#examples ul li").removeAttr("class");
+ $("#examples ul li").removeAttr("style");
+ var examplesul = $("#examples ul");
+ var exampleslist = $('<li></li>');
+ var exampleslink = $('<a href="#"></a>');
+ exampleslink.append(examplestext);
+ exampleslist.append(exampleslink);
+ exampleslist.append(examplesul);
+ narrowmenu.append(exampleslist);
+
+ $("#shortCut").after(narrowmenu);
+ $('ul#narrowmenu').superfish({
+ delay: 100,
+ autoArrows: false,
+ disableHI: true
+ });
+}
+
+$(document).ready(function(){
+ if ($('body').hasClass('narrow')) {
+ narrowInit();
+ }
+});
+
+$(window).bind('resize', function () {
+ if($(window).width()<600) {
+ $('body').addClass('narrow');
+
+ if ($("#narrowsearch").length == 0) {
+ narrowInit();
+ }
+ }
+ else {
+ $('body').removeClass('narrow');
+ }
+}); \ No newline at end of file
diff --git a/doc/src/template/scripts/superfish.js b/doc/src/template/scripts/superfish.js
new file mode 100644
index 0000000..c6a9c7d
--- /dev/null
+++ b/doc/src/template/scripts/superfish.js
@@ -0,0 +1,121 @@
+
+/*
+ * Superfish v1.4.8 - jQuery menu widget
+ * Copyright (c) 2008 Joel Birch
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
+ */
+
+;(function($){
+ $.fn.superfish = function(op){
+
+ var sf = $.fn.superfish,
+ c = sf.c,
+ $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
+ over = function(){
+ var $$ = $(this), menu = getMenu($$);
+ clearTimeout(menu.sfTimer);
+ $$.showSuperfishUl().siblings().hideSuperfishUl();
+ },
+ out = function(){
+ var $$ = $(this), menu = getMenu($$), o = sf.op;
+ clearTimeout(menu.sfTimer);
+ menu.sfTimer=setTimeout(function(){
+ o.retainPath=($.inArray($$[0],o.$path)>-1);
+ $$.hideSuperfishUl();
+ if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
+ },o.delay);
+ },
+ getMenu = function($menu){
+ var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
+ sf.op = sf.o[menu.serial];
+ return menu;
+ },
+ addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
+
+ return this.each(function() {
+ var s = this.serial = sf.o.length;
+ var o = $.extend({},sf.defaults,op);
+ o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
+ $(this).addClass([o.hoverClass,c.bcClass].join(' '))
+ .filter('li:has(ul)').removeClass(o.pathClass);
+ });
+ sf.o[s] = sf.op = o;
+
+ $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
+ if (o.autoArrows) addArrow( $('>a:first-child',this) );
+ })
+ .not('.'+c.bcClass)
+ .hideSuperfishUl();
+
+ var $a = $('a',this);
+ $a.each(function(i){
+ var $li = $a.eq(i).parents('li');
+ $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
+ });
+ o.onInit.call(this);
+
+ }).each(function() {
+ var menuClasses = [c.menuClass];
+ if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
+ $(this).addClass(menuClasses.join(' '));
+ });
+ };
+
+ var sf = $.fn.superfish;
+ sf.o = [];
+ sf.op = {};
+ sf.IE7fix = function(){
+ var o = sf.op;
+ if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
+ this.toggleClass(sf.c.shadowClass+'-off');
+ };
+ sf.c = {
+ bcClass : 'sf-breadcrumb',
+ menuClass : 'sf-js-enabled',
+ anchorClass : 'sf-with-ul',
+ arrowClass : 'sf-sub-indicator',
+ shadowClass : 'sf-shadow'
+ };
+ sf.defaults = {
+ hoverClass : 'sfHover',
+ pathClass : 'overideThisToUse',
+ pathLevels : 1,
+ delay : 800,
+ animation : {opacity:'show'},
+ speed : 'normal',
+ autoArrows : true,
+ dropShadows : true,
+ disableHI : false, // true disables hoverIntent detection
+ onInit : function(){}, // callback functions
+ onBeforeShow: function(){},
+ onShow : function(){},
+ onHide : function(){}
+ };
+ $.fn.extend({
+ hideSuperfishUl : function(){
+ var o = sf.op,
+ not = (o.retainPath===true) ? o.$path : '';
+ o.retainPath = false;
+ var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
+ .find('>ul').hide().css('visibility','hidden');
+ o.onHide.call($ul);
+ return this;
+ },
+ showSuperfishUl : function(){
+ var o = sf.op,
+ sh = sf.c.shadowClass+'-off',
+ $ul = this.addClass(o.hoverClass)
+ .find('>ul:hidden').css('visibility','visible');
+ sf.IE7fix.call($ul);
+ o.onBeforeShow.call($ul);
+ $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
+ return this;
+ }
+ });
+
+})(jQuery);
diff --git a/doc/src/template/style/OfflineStyle.css b/doc/src/template/style/OfflineStyle.css
new file mode 100644
index 0000000..ddd580a
--- /dev/null
+++ b/doc/src/template/style/OfflineStyle.css
@@ -0,0 +1,819 @@
+@media screen
+{
+ html
+ {
+ color: #000000;
+ background: #FFFFFF;
+ }
+ body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td
+ {
+ margin: 0;
+ padding: 0;
+ }
+ table
+ {
+ border-collapse: collapse;
+ border-spacing: 0;
+ }
+ fieldset, img
+ {
+ border: 0;
+ }
+ address, caption, cite, code, dfn, em, strong, th, var, optgroup
+ {
+ font-style: inherit;
+ font-weight: inherit;
+ }
+ del, ins
+ {
+ text-decoration: none;
+ }
+ li
+ {
+ list-style: none;
+ }
+ caption, th
+ {
+ text-align: left;
+ }
+ h1, h2, h3, h4, h5, h6
+ {
+ font-size: 100%;
+ }
+ q:before, q:after
+ {
+ content: '';
+ }
+ abbr, acronym
+ {
+ border: 0;
+ font-variant: normal;
+ }
+ sup
+ {
+ vertical-align: baseline;
+ }
+ sub
+ {
+ vertical-align: baseline;
+ }
+ tt, .qmlreadonly span, .qmldefault span
+ {
+ word-spacing:5px;
+ }
+ .heading
+ {
+ font: normal 600 16px/1.0 Arial;
+ }
+ .subtitle
+ {
+ font-size: 13px;
+ }
+ .small-subtitle
+ {
+ font-size: 13px;
+ }
+ legend
+ {
+ color: #000000;
+ }
+ input, button, textarea, select, optgroup, option
+ {
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ }
+ input, button, textarea, select
+ {
+ font-size: 100%;
+ }
+ body
+ {
+ font: normal 13px/1.2 Verdana;
+ color: #363534;
+ }
+ strong
+ {
+ font-weight: bold;
+ }
+ em
+ {
+ font-style: italic;
+ }
+ a
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
+ .header, .footer, .wrapper
+ {
+ /*min-width: 600px;*/
+ max-width: 1500px;
+ margin: 0 5px;
+ }
+ .wrapper
+ {
+ position:relative;
+ top:50px;
+ }
+ .wrapper .bd
+ {
+ position: relative;
+ }
+
+ .header, .footer
+ {
+ display: block;
+ clear: both;
+ overflow: hidden;
+ }
+ .header
+ {
+ height: 115px;
+ position: relative;
+ }
+
+
+ .header .qtref
+ {
+ position: absolute;
+ top: 28px;
+ left: 88px;
+ width: 302px;
+ height: 22px;
+ }
+ .header .qtref span
+ {
+ display: block;
+ height: 22px;
+ }
+ .wrap .content h1
+ {
+ font: 600 18px/1.2 Arial;
+ }
+ .wrap .content h2
+ {
+ font: 600 16px/1.2 Arial;
+ }
+ .wrap .content h3
+ {
+ font: 600 14px/1.2 Arial;
+ }
+ .wrap .content h4
+ {
+ font: 600 12px/1.2 Arial;
+ }
+
+ .wrap .content p
+ {
+ line-height: 20px;
+ padding: 5px;
+ }
+ .wrap .content table p
+ {
+ line-height: 20px;
+ padding: 0px;
+ }
+ .wrap .content ul
+ {
+ padding-left: 25px;
+ padding-top: 10px;
+ }
+ a:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+ .content a:visited
+ {
+ color: #4c0033;
+ text-decoration: none;
+ }
+ .content a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ pre
+ {
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ overflow-x: auto;
+ }
+ table, pre
+ {
+ -moz-border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #E6E6E6;
+ border-collapse: separate;
+ font-size: 11px;
+ /*min-width: 395px;*/
+ margin-bottom: 25px;
+ display: inline-block;
+ }
+ thead
+ {
+ margin-top: 5px;
+ font:600 12px/1.2 Arial;
+ }
+ th
+ {
+ padding: 5px 15px 5px 15px;
+ background-color: #E1E1E1;
+ /* border-bottom: 1px solid #E6E6E6;*/
+ border-left: 1px solid #E6E6E6;
+ /* border-right: 1px solid #E6E6E6;*/
+ }
+ td
+ {
+ padding: 3px 15px 3px 20px;
+ /* border-left: 1px solid #E6E6E6;
+ border-right: 1px solid #E6E6E6;*/
+ }
+ tr.odd td:hover, tr.even td:hover
+ {
+ /* border-right: 1px solid #C3C3C3;
+ border-left: 1px solid #C3C3C3;*/
+ }
+
+ td.rightAlign
+ {
+ padding: 3px 15px 3px 10px;
+ }
+ table tr.odd
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #F6F6F6;
+ color: #66666E;
+ }
+ table tr.even
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #ffffff;
+ color: #66666E;
+ }
+ table tr.odd td:hover, table tr.even td:hover
+ {
+ background-color: #E6E6E6;
+ }
+
+ span.comment
+ {
+ color: #8B0000;
+ font-style: italic;
+ }
+ span.string, span.char
+ {
+ color: #254117;
+ }
+
+ .qmltype
+ {
+ text-align: center;
+ font-size: 160%;
+ }
+ .qmlreadonly
+ {
+ float: right;
+ color: #254117;
+ }
+
+ .qmldefault
+ {
+ float: right;
+ color: red;
+ }
+
+ .footer
+ {
+ border-top:1px solid #E5E5E5;
+ min-height: 100px;
+ color: #797775;
+ font: normal 9px/1 Verdana;
+ text-align: center;
+ padding-top: 40px;
+ margin: 0;
+ }
+
+
+ .wrap
+ {
+ margin: 0 5px 0 5px;
+ }
+ .wrap .toolbar
+ {
+ display:block;
+ }
+
+ .wrap .breadcrumb ul li
+ {
+ float: left;
+ background: url(../images/breadcrumb.png) no-repeat 0 5px;
+ padding-left: 15px;
+ margin-left: 15px;
+ font-weight: bold;
+ }
+ .wrap .breadcrumb ul li.last
+ {
+ font-weight: normal;
+ }
+ .wrap .breadcrumb ul li a
+ {
+ /* color: #363534;*/
+ color: #00732F;
+ }
+ .wrap .breadcrumb ul li.first
+ {
+ background-image: none;
+ padding-left: 0;
+ margin-left: 0;
+ }
+ .wrap .content
+ {
+ word-wrap:break-word;
+ }
+ .wrap .content li
+ {
+ padding-left: 12px;
+ background: url(../images/bullet_sq.png) no-repeat 0 5px;
+ font: normal 400 10pt/1 Verdana;
+ margin-bottom: 10px;
+ }
+
+ .offline .wrap .content
+ {
+ padding-top: 15px;
+ }
+
+ .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
+ hr
+ {
+ background-color: #E6E6E6;
+ border: 1px solid #E6E6E6;
+ height: 1px;
+ width: 100%;
+ text-align: left;
+ margin: 5px 0px 5px 0px;
+ }
+
+ .content .alignedsummary
+ {
+ margin: 5px;
+ width:100%;
+ }
+
+
+ .toc
+ {
+ float: right;
+ -moz-border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ height: auto;
+ width: 200px;
+ }
+
+ .toc h3, .generic a
+ {
+ font: 600 12px/1.2 Arial;
+ }
+
+ .wrap .content .toc ul
+ {
+ padding-left: 0px;
+ }
+
+
+ .wrap .content .toc .level2
+ {
+ margin-left: 15px;
+ }
+
+ .wrap .content .toc .level3
+ {
+ margin-left: 30px;
+ }
+
+ .content .toc li
+ {
+ font: normal 10px/1.2 Verdana;
+ background: url(../images/bullet_dn.png) no-repeat 0 5px;
+ }
+
+
+ .generic{
+ max-width:75%;
+ }
+ .generic td{
+ padding:0;
+ }
+
+ .generic .odd .alphaChar{
+ background-color: #F6F6F6;
+ }
+
+ .generic .even .alphaChar{
+ background-color: #FFFFFF;
+ }
+
+ .highlightedCode
+ {
+ margin:10px;
+ }
+
+ .flowList{
+ vertical-align:top;
+ }
+ .alphaChar{
+ width:100%;
+ background-color:#F6F6F6;
+ border:1px solid #E6E6E6;
+ font-size:12pt;
+ padding-left:10px;
+ margin-top:10px;
+ margin-bottom:10px;
+ }
+
+ .flowList dl{
+ }
+ .flowList dd{
+ display:inline-block;
+ margin-left:10px;
+ width:250px;
+ }
+ .wrap .content .flowList p{
+ padding:0px;
+ }
+
+ .relpage
+ {
+ -moz-border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ padding: 25px 25px;
+ clear: both;
+ }
+ .relpage ul
+ {
+ float: none;
+ padding: 15px;
+ }
+ .content .relpage li
+ {
+ font: normal 11px/1.2 Verdana;
+ }
+ h3.fn, span.fn
+ {
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ font-weight: bold;
+ word-spacing:3px;
+ }
+
+ .functionIndex {
+ font-size:12pt;
+ word-spacing:10px;
+ margin-bottom:10px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ width:100%;
+ }
+
+ .centerAlign { text-align:center;}
+ .rightAlign {text-align:right;}
+ .leftAlign {text-align:left;}
+ .topAlign{vertical-align:top }
+ .functionIndex a{display:inline-block;}
+
+ /* start index box */
+ .indexbox
+ {
+ width: 100%;
+ display:inline-block;
+ }
+
+ .indexboxcont { display: block; }
+
+ .indexboxbar
+ {
+ border-bottom:1px solid #E5E5E5;
+ margin-bottom: 25px;
+ }
+
+ .indexboxcont .section
+ {
+ display: inline-block;
+ padding:0 2% 0 1%;
+ vertical-align:top;
+ }
+
+ .indexboxcont .section {
+ float: left;
+ }
+
+ .indexboxcont .section p
+ {
+ padding-top: 20px;
+ padding-bottom: 20px;
+ }
+ .indexboxcont .sectionlist
+ {
+ display: inline-block;
+ vertical-align:top;
+ padding: 0;
+ }
+ .indexboxcont .sectionlist ul
+ {
+ margin-bottom: 20px;
+ }
+
+ .indexboxcont .sectionlist ul li
+ {
+ line-height: 12px;
+ }
+
+ .content .indexboxcont li
+ {
+ font: normal 600 13px/1 Verdana;
+ }
+
+ .indexbox a:hover, .indexbox a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ .indexbox a:visited
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
+
+ .indexbox .indexIcon {
+ width: 11%;
+ }
+
+
+ .indexboxcont:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
+ body.offline
+ {
+ background-image: none;
+ }
+
+ .offline .footer {
+ margin: 0;
+ }
+ .offline .header
+ {
+ width: 100%;
+ margin: 0;
+ height: auto;
+ background-color: #ffffff;
+ padding: 10px 0 5px 0;
+ overflow: visible;
+ border-bottom: solid #E5E5E5 1px;
+ z-index:1;
+ position:fixed;
+ }
+
+ .offline .header .content
+ {
+ }
+ .offline .header .qtref
+ {
+ color: #00732F;
+ position: static;
+ float: left;
+ margin-left: 5px;
+ font: bold 18px/1 Arial;
+ }
+
+ .offline .header .qtref:visited
+ {
+ color: #00732F;
+ }
+ .offline .header .qtref:hover
+ {
+ color: #00732F;
+ text-decoration:none;
+ }
+ .offline .header .qtref span
+ {
+ background-image: none;
+ text-indent: 0;
+ text-decoration:none;
+ }
+
+ .offline .wrap
+ {
+ margin: 0 5px 0 5px;
+ }
+
+ .offline .wrap .toolbar
+ {
+ display:block;
+ padding-top:5px;
+ }
+
+ .offline .wrap .breadcrumb ul li {
+ font-weight: normal;
+ }
+
+ .offline .wrap .breadcrumb ul li a {
+ /*color: #44a51c;*/
+ }
+
+ .offline .wrap .breadcrumb ul li.last a {
+ /*color: #363534;*/
+ }
+
+
+
+ .narrow .indexboxcont .section {
+ width: 64%;
+ padding-left: 0;
+ }
+
+ .narrow .indexboxcont .sectionlist {
+ width: 32.5%;
+ }
+
+ .header .icon,
+ .sidebar,
+ .feedback,
+ .t_button,
+ .feedback,
+ #feedbackBox,
+ #feedback,
+ #blurpage,
+ .indexbox .indexIcon span,
+ .wrapper .hd,
+ .offline .indexbox .indexIcon,
+ .offline .header #nav-logo,
+ #offlinemenu,
+ #offlinesearch,
+ .offline .header #nav-topright,
+ .offline .header #shortCut ,
+ .offline .wrapper .hd,
+ .offline .wrapper .ft,
+ .offline .sidebar,
+ .offline .wrap .feedback
+ {
+ display:none;
+ }
+
+ /* end offline mode */
+#narrowmenu {
+ display: none;
+ float: right;
+ margin: 15px 40px 0 0;
+ font-size: 11px;
+ }
+
+ .narrow #narrowmenu {
+ display: block;
+ }
+
+ #narrowsearch{
+ display:none;
+ }
+
+ #narrowmenu ul
+ {
+ border-bottom:solid 1px #E5E5E5;
+ border-left:solid 1px #E5E5E5;
+ border-right:solid 1px #E5E5E5;
+ }
+
+ #narrowmenu a {
+ line-height: 1.1;
+ background: url(../images/arrow_down.png) no-repeat 100% 50%;
+ white-space: nowrap;
+ padding: 0 16px 0 5px;
+ }
+
+ #narrowmenu li {
+ margin-left: 20px;
+ }
+
+ #narrowmenu li li {
+ margin: 0 0 5px 0;
+ }
+
+ #narrowmenu li li a {
+ padding: 0;
+ background-image: none;
+ }
+
+ #narrowmenu li,
+ #narrowmenu li ul {
+ background-color: #fff;
+ }
+
+ #narrowmenu li ul {
+ width: auto;
+ padding: 5px;
+ margin-top:-15px;
+ }
+
+ .sf-menu li:hover ul, .sf-menu li.sfHover ul {
+ top: 1.2em;
+ }
+.sf-menu, .sf-menu * {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.sf-menu {
+ line-height: 1.0;
+}
+.sf-menu ul {
+ position: absolute;
+ top: -999em;
+ width: 10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+ width: 100%;
+}
+.sf-menu li:hover {
+ visibility: inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+ float: left;
+ position: relative;
+}
+.sf-menu a {
+ display: block;
+ position: relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+ left: 0;
+ top: 2.5em; /* match top ul list item height */
+ z-index: 99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+
+}
+/* end of screen media */
+
+/* start of print media */
+
+@media print
+{
+ input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
+ {
+ display: none;
+ background: none;
+ }
+ .content
+ {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ background: none;
+ display: block;
+ }
+}
+/* end of print media */
diff --git a/doc/src/template/style/narrow.css b/doc/src/template/style/narrow.css
new file mode 100644
index 0000000..05159aa
--- /dev/null
+++ b/doc/src/template/style/narrow.css
@@ -0,0 +1,250 @@
+ /* start narrow mode */
+
+ body.narrow
+ {
+ background-image: none;
+ }
+
+ .narrow a {
+ color: #44a51c;
+ }
+
+ .narrow .header, .narrow .header .content, .narrow .footer, .narrow .wrapper {
+ margin: 0 7px;
+ min-width: 300px;
+ }
+
+ .narrow .footer {
+ margin: 0;
+ }
+ .narrow .header
+ {
+ width: 100%;
+ margin: 0;
+ height: auto;
+ background: #fff url(../images/header_bg.png) repeat-x 0 100%;
+ padding: 10px 0 5px 0;
+ overflow: visible;
+ }
+
+ .narrow .header .content
+ {
+ }
+
+ .narrow .header #nav-logo
+ {
+ display: none;
+ }
+
+ .narrow .header .qtref
+ {
+ width: auto;
+ height: auto;
+ color: #363534;
+ position: static;
+ float: left;
+ margin-left: 25px;
+ font: bold 18px/1 Arial;
+ }
+
+ .narrow .header .qtref a
+ {
+ color: #363534;
+ }
+
+ .narrow .header .qtref span
+ {
+ background-image: none;
+ text-indent: 0;
+ }
+
+ .narrow .header #nav-topright
+ {
+ display: none;
+ }
+
+ .narrow .header #shortCut
+ {
+ clear: both;
+ font-weight: normal;
+ position: static;
+ float: left;
+ margin: 15px 0 0 25px;
+ overflow: hidden;
+ padding: 0;
+ height: auto;
+ }
+
+ .narrow .header #shortCut ul
+ {
+ float: none;
+ margin: 0;
+ width: auto;
+ font-size: 11px;
+ }
+
+ .narrow .header #shortCut ul li
+ {
+ background-image: none;
+ }
+
+ .narrow .header #shortCut ul .shortCut-topleft-active,
+ .narrow .header #shortCut ul .shortCut-topleft-inactive
+ {
+ background-image: none;
+ height: auto;
+ padding: 0;
+ width: auto;
+ }
+ .narrow .header #shortCut ul li a
+ {
+ color: #44a51c;
+ }
+
+ .narrow .wrapper .hd
+ {
+ background: url(../images/bg_ul_blank.png) no-repeat 0 0;
+ }
+
+ .narrow .wrapper .bd
+ {
+ background: url(../images/bg_l_blank.png) repeat-y 0 0;
+ }
+
+ .narrow .wrapper .ft
+ {
+ background: url(../images/bg_ll_blank.png) no-repeat 0 0;
+ }
+
+ .narrow .sidebar
+ {
+ display: none;
+ }
+
+ .narrow .wrap
+ {
+ margin: 0 5px 0 5px;
+ }
+
+ .narrow .wrap .toolbar
+ {
+ border-bottom: none;
+ }
+
+ .narrow .wrap .content
+ {
+ padding-top: 15px;
+ }
+
+ .narrow .wrap .feedback
+ {
+ display: none;
+ }
+
+ .narrow .wrap .breadcrumb ul li {
+ font-weight: normal;
+ }
+
+ .narrow .wrap .breadcrumb ul li a {
+ color: #44a51c;
+ }
+
+ .narrow .wrap .breadcrumb ul li.last a {
+ color: #363534;
+ }
+
+ #narrowsearch {
+ display: none;
+ }
+
+ .narrow #narrowsearch {
+ display: block;
+ float: right;
+ margin-right: 25px;
+ _position: relative;
+ }
+
+ .narrow #narrowsearch fieldset {
+ _position: absolute;
+ _margin-top: -1px;
+ }
+
+ .narrow #narrowsearch {
+ background: url("http://doc.qt.nokia.com/prototype/html/images/sprites-combined.png") no-repeat scroll -6px -348px transparent;
+ height: 21px;
+ padding: 2px 0 0 5px;
+ width: 167px;
+ }
+
+ .narrow #narrowsearch input {
+ border: none;
+ font: 13px/1.2 Verdana;
+ height: 19px;
+ outline: none;
+ padding: 0;
+ width: 158px;
+ *border: 1px solid #fff;
+ *height: 17px;
+ _height: 18px;
+ }
+
+ .narrow .indexbox .indexIcon {
+ display: none;
+ }
+
+ .narrow .indexboxcont .section {
+ width: 64%;
+ padding-left: 0;
+ }
+
+ .narrow .indexboxcont .sectionlist {
+ width: 32.5%;
+ }
+
+ #narrowmenu {
+ display: none;
+ float: right;
+ margin: 15px 40px 0 0;
+ font-size: 11px;
+ }
+
+ .narrow #narrowmenu {
+ display: block;
+ }
+
+ #narrowmenu a {
+ line-height: 1.1;
+ background: url(../images/arrow_down.png) no-repeat 100% 50%;
+ white-space: nowrap;
+ padding: 0 16px 0 5px;
+ }
+
+ #narrowmenu li {
+ margin-left: 20px;
+ }
+
+ #narrowmenu li li {
+ margin: 0 0 5px 0;
+ }
+
+ #narrowmenu li li a {
+ padding: 0;
+ background-image: none;
+ }
+
+ #narrowmenu li,
+ #narrowmenu li ul {
+ background-color: #fff;
+ margin-top:-1px;
+ }
+
+ #narrowmenu li ul {
+ width: auto;
+ padding: 5px;
+ }
+
+ .sf-menu li:hover ul, .sf-menu li.sfHover ul {
+ top: 1.2em;
+ }
+
+ /* end narrow mode */
diff --git a/doc/src/template/style/superfish.css b/doc/src/template/style/superfish.css
new file mode 100644
index 0000000..0cf0f7d
--- /dev/null
+++ b/doc/src/template/style/superfish.css
@@ -0,0 +1,51 @@
+.sf-menu, .sf-menu * {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.sf-menu {
+ line-height: 1.0;
+}
+.sf-menu ul {
+ position: absolute;
+ top: -999em;
+ width: 10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+ width: 100%;
+}
+.sf-menu li:hover {
+ visibility: inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+ float: left;
+ position: relative;
+}
+.sf-menu a {
+ display: block;
+ position: relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+ left: 0;
+ top: 2.5em; /* match top ul list item height */
+ z-index: 99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
diff --git a/doc/src/template/style/superfish_skin.css b/doc/src/template/style/superfish_skin.css
new file mode 100644
index 0000000..8d84827
--- /dev/null
+++ b/doc/src/template/style/superfish_skin.css
@@ -0,0 +1,83 @@
+
+/*** DEMO SKIN ***/
+.sf-menu {
+ float: left;
+ margin-bottom: 1em;
+}
+.sf-menu a {
+ border-left: 1px solid #fff;
+ border-top: 1px solid #CFDEFF;
+ padding: .75em 1em;
+ text-decoration:none;
+}
+.sf-menu a, .sf-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/
+ color: #13a;
+}
+.sf-menu li {
+ background: #BDD2FF;
+}
+.sf-menu li li {
+ background: #AABDE6;
+}
+.sf-menu li li li {
+ background: #9AAEDB;
+}
+.sf-menu li:hover, .sf-menu li.sfHover,
+.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
+ background: #CFDEFF;
+ outline: 0;
+}
+
+/*** arrows **/
+.sf-menu a.sf-with-ul {
+ padding-right: 2.25em;
+ min-width: 1px; /* trigger IE7 hasLayout so spans position accurately */
+}
+.sf-sub-indicator {
+ position: absolute;
+ display: block;
+ right: .75em;
+ top: 1.05em; /* IE6 only */
+ width: 10px;
+ height: 10px;
+ text-indent: -999em;
+ overflow: hidden;
+ background: url('../images/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
+}
+a > .sf-sub-indicator { /* give all except IE6 the correct values */
+ top: .8em;
+ background-position: 0 -100px; /* use translucent arrow for modern browsers*/
+}
+/* apply hovers to modern browsers */
+a:focus > .sf-sub-indicator,
+a:hover > .sf-sub-indicator,
+a:active > .sf-sub-indicator,
+li:hover > a > .sf-sub-indicator,
+li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px -100px; /* arrow hovers for modern browsers*/
+}
+
+/* point right for anchors in subs */
+.sf-menu ul .sf-sub-indicator { background-position: -10px 0; }
+.sf-menu ul a > .sf-sub-indicator { background-position: 0 0; }
+/* apply hovers to modern browsers */
+.sf-menu ul a:focus > .sf-sub-indicator,
+.sf-menu ul a:hover > .sf-sub-indicator,
+.sf-menu ul a:active > .sf-sub-indicator,
+.sf-menu ul li:hover > a > .sf-sub-indicator,
+.sf-menu ul li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px 0; /* arrow hovers for modern browsers*/
+}
+
+/*** shadows for all but IE6 ***/
+.sf-shadow ul {
+ background: url('../images/shadow.png') no-repeat bottom right;
+ padding: 0 8px 9px 0;
+ -moz-border-radius-bottomleft: 17px;
+ -moz-border-radius-topright: 17px;
+ -webkit-border-top-right-radius: 17px;
+ -webkit-border-bottom-left-radius: 17px;
+}
+.sf-shadow ul.sf-shadow-off {
+ background: transparent;
+}
diff --git a/examples/declarative/imageelements/image/ImageCell.qml b/examples/declarative/imageelements/image/ImageCell.qml
new file mode 100644
index 0000000..bd232b9
--- /dev/null
+++ b/examples/declarative/imageelements/image/ImageCell.qml
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import Qt 4.7
+
+Item {
+ property alias mode: image.fillMode
+ property alias caption: captionItem.text
+
+ width: parent.cellWidth; height: parent.cellHeight
+
+ Image {
+ id: image
+ width: parent.width; height: parent.height - captionItem.height
+ source: "face-smile.png"
+ clip: true // only makes a difference if mode is PreserveAspectCrop
+ smooth: true
+ }
+
+ Text {
+ id: captionItem
+ anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom
+ }
+}
diff --git a/examples/declarative/imageelements/image/face-smile.png b/examples/declarative/imageelements/image/face-smile.png
new file mode 100644
index 0000000..3d66d72
--- /dev/null
+++ b/examples/declarative/imageelements/image/face-smile.png
Binary files differ
diff --git a/examples/declarative/imageelements/image/image.qml b/examples/declarative/imageelements/image/image.qml
new file mode 100644
index 0000000..bc5ae37
--- /dev/null
+++ b/examples/declarative/imageelements/image/image.qml
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+
+Rectangle {
+ width: 490
+ height: 285
+
+ Grid {
+ property int cellWidth: (width - (spacing * (columns - 1))) / columns
+ property int cellHeight: (height - (spacing * (rows - 1))) / rows
+
+ anchors.fill: parent
+ anchors.margins: 30
+
+ columns: 3
+ rows: 2
+ spacing: 30
+
+ ImageCell { mode: Image.Stretch; caption: "Stretch" }
+ ImageCell { mode: Image.PreserveAspectFit; caption: "PreserveAspectFit" }
+ ImageCell { mode: Image.PreserveAspectCrop; caption: "PreserveAspectCrop" }
+
+ ImageCell { mode: Image.Tile; caption: "Tile" }
+ ImageCell { mode: Image.TileHorizontally; caption: "TileHorizontally" }
+ ImageCell { mode: Image.TileVertically; caption: "TileVertically" }
+ }
+}
diff --git a/examples/declarative/imageelements/image/image.qmlproject b/examples/declarative/imageelements/image/image.qmlproject
new file mode 100644
index 0000000..d4909f8
--- /dev/null
+++ b/examples/declarative/imageelements/image/image.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/modelviews/listview/content/pics/add.png b/examples/declarative/modelviews/listview/content/pics/add.png
deleted file mode 100644
index f29d84b..0000000
--- a/examples/declarative/modelviews/listview/content/pics/add.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/modelviews/listview/content/pics/del.png b/examples/declarative/modelviews/listview/content/pics/del.png
deleted file mode 100644
index 1d753a3..0000000
--- a/examples/declarative/modelviews/listview/content/pics/del.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/modelviews/listview/content/pics/trash.png b/examples/declarative/modelviews/listview/content/pics/trash.png
deleted file mode 100644
index 2042595..0000000
--- a/examples/declarative/modelviews/listview/content/pics/trash.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/modelviews/listview/dynamic.qml b/examples/declarative/modelviews/listview/dynamiclist.qml
index cf0e387..df2e094 100644
--- a/examples/declarative/modelviews/listview/dynamic.qml
+++ b/examples/declarative/modelviews/listview/dynamiclist.qml
@@ -95,6 +95,7 @@ Rectangle {
id: fruitDelegate
Item {
+ id: wrapper
width: container.width; height: 55
Column {
@@ -169,6 +170,38 @@ Rectangle {
MouseArea { anchors.fill:parent; onClicked: fruitModel.remove(index) }
}
+
+ // Animate adding and removing items
+ ListView.delayRemove: true // so that the item is not destroyed immediately
+ ListView.onAdd: state = "add"
+ ListView.onRemove: state = "remove"
+ states: [
+ State {
+ name: "add"
+ PropertyChanges { target: wrapper; height: 55; clip: true }
+ },
+ State {
+ name: "remove"
+ PropertyChanges { target: wrapper; height: 0; clip: true }
+ }
+ ]
+ transitions: [
+ Transition {
+ to: "add"
+ SequentialAnimation {
+ NumberAnimation { properties: "height"; from: 0; to: 55 }
+ PropertyAction { target: wrapper; property: "state"; value: "" }
+ }
+ },
+ Transition {
+ to: "remove"
+ SequentialAnimation {
+ NumberAnimation { properties: "height" }
+ // Make sure delayRemove is set back to false so that the item can be destroyed
+ PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: false }
+ }
+ }
+ ]
}
}
diff --git a/examples/declarative/modelviews/listview/recipes.qml b/examples/declarative/modelviews/listview/expandingdelegates.qml
index f4b97ea..f4b97ea 100644
--- a/examples/declarative/modelviews/listview/recipes.qml
+++ b/examples/declarative/modelviews/listview/expandingdelegates.qml
diff --git a/examples/declarative/modelviews/listview/listview-example.qml b/examples/declarative/modelviews/listview/highlightranges.qml
index a8a95c4..a8a95c4 100644
--- a/examples/declarative/modelviews/listview/listview-example.qml
+++ b/examples/declarative/modelviews/listview/highlightranges.qml
diff --git a/examples/declarative/modelviews/listview/itemlist.qml b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qml
index 1b44e05..1b44e05 100644
--- a/examples/declarative/modelviews/listview/itemlist.qml
+++ b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qml
diff --git a/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qmlproject b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qmlproject
new file mode 100644
index 0000000..d4909f8
--- /dev/null
+++ b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/text/edit/edit.qml b/examples/declarative/text/edit/edit.qml
index 0be42e9..4668ab2 100644
--- a/examples/declarative/text/edit/edit.qml
+++ b/examples/declarative/text/edit/edit.qml
@@ -121,6 +121,9 @@ Rectangle {
onClicked: {
if (editor.state == "") {
edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
+ if (!edit.focus)
+ edit.focus = true;
+ edit.openSoftwareInputPanel();
}
}
function hitHandle(h,x,y) { return x>=h.x+flick.contentX && x<h.x+flick.contentX+h.width && y>=h.y+flick.contentY && y<h.y+flick.contentY+h.height }
diff --git a/examples/declarative/toys/corkboards/Day.qml b/examples/declarative/toys/corkboards/Day.qml
index f9c901f..cc297b1 100644
--- a/examples/declarative/toys/corkboards/Day.qml
+++ b/examples/declarative/toys/corkboards/Day.qml
@@ -49,6 +49,11 @@ Component {
Image { source: "cork.jpg" }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: page.focus = false;
+ }
+
Text {
text: name; x: 15; y: 8; height: 40; width: 370
font.pixelSize: 18; font.bold: true; color: "white"
@@ -106,7 +111,7 @@ Component {
drag.maximumY: page.height - 80
drag.minimumX: 100
drag.maximumX: page.width - 140
- onClicked: { myText.focus = true }
+ onClicked: { myText.focus = true; myText.openSoftwareInputPanel(); }
}
}
}
diff --git a/examples/declarative/toys/dynamicscene/dynamicscene.qml b/examples/declarative/toys/dynamicscene/dynamicscene.qml
index 659a257..1edb841 100644
--- a/examples/declarative/toys/dynamicscene/dynamicscene.qml
+++ b/examples/declarative/toys/dynamicscene/dynamicscene.qml
@@ -50,7 +50,12 @@ Item {
//This is a desktop-sized example
width: 800; height: 480
-
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: window.focus = false;
+ }
+
//This is the message box that pops up when there's an error
Rectangle {
id: dialog
diff --git a/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml b/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml
index d235d35..c216c08 100644
--- a/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml
+++ b/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml
@@ -58,10 +58,12 @@ Rectangle {
function showWithInput(text) {
show(text);
textInput.opacity = 1;
+ textInput.focus = true;
textInput.text = ""
}
function hide() {
+ textInput.focus = false;
container.opacity = 0;
container.closed();
}
@@ -70,6 +72,7 @@ Rectangle {
width: dialogText.width + textInput.width + 20
height: dialogText.height + 20
opacity: 0
+ visible: opacity > 0
Text {
id: dialogText
@@ -82,7 +85,6 @@ Rectangle {
id: textInput
anchors { verticalCenter: parent.verticalCenter; left: dialogText.right }
width: 80
- focus: true
text: ""
onAccepted: container.hide() // close dialog when Enter is pressed
@@ -91,7 +93,13 @@ Rectangle {
MouseArea {
anchors.fill: parent
- onClicked: hide();
+
+ onClicked: {
+ if (textInput.text == "" && textInput.opacity > 0)
+ textInput.openSoftwareInputPanel();
+ else
+ hide();
+ }
}
//![3]
diff --git a/examples/declarative/ui-components/searchbox/SearchBox.qml b/examples/declarative/ui-components/searchbox/SearchBox.qml
index c022626..eaa6b6b 100644
--- a/examples/declarative/ui-components/searchbox/SearchBox.qml
+++ b/examples/declarative/ui-components/searchbox/SearchBox.qml
@@ -66,7 +66,7 @@ FocusScope {
font.italic: true
}
- MouseArea { anchors.fill: parent; onClicked: focusScope.focus = true }
+ MouseArea { anchors.fill: parent; onClicked: { focusScope.focus = true; textInput.openSoftwareInputPanel(); } }
TextInput {
id: textInput
@@ -82,7 +82,7 @@ FocusScope {
MouseArea {
anchors.fill: parent
- onClicked: { textInput.text = ''; focusScope.focus = true }
+ onClicked: { textInput.text = ''; focusScope.focus = true; textInput.openSoftwareInputPanel(); }
}
}
diff --git a/examples/declarative/ui-components/searchbox/main.qml b/examples/declarative/ui-components/searchbox/main.qml
index 0508d5a..bf3bed8 100644
--- a/examples/declarative/ui-components/searchbox/main.qml
+++ b/examples/declarative/ui-components/searchbox/main.qml
@@ -41,9 +41,14 @@
import Qt 4.7
Rectangle {
+ id: page
width: 500; height: 250
color: "#edecec"
+ MouseArea {
+ anchors.fill: parent
+ onClicked: page.focus = false;
+ }
Column {
anchors { horizontalCenter: parent.horizontalCenter; verticalCenter: parent.verticalCenter }
spacing: 10
diff --git a/mkspecs/common/qws.conf b/mkspecs/common/qws.conf
index 96341a7..225f0ff 100644
--- a/mkspecs/common/qws.conf
+++ b/mkspecs/common/qws.conf
@@ -14,6 +14,10 @@ QMAKE_INCDIR_X11 =
QMAKE_LIBDIR_X11 =
QMAKE_INCDIR_OPENGL =
QMAKE_LIBDIR_OPENGL =
+QMAKE_INCDIR_OPENGL_ES1 =
+QMAKE_LIBDIR_OPENGL_ES1 =
+QMAKE_INCDIR_OPENGL_ES2 =
+QMAKE_LIBDIR_OPENGL_ES2 =
QMAKE_LIBS_X11 =
QMAKE_LIBS_X11SM =
QMAKE_LIBS_OPENGL =
diff --git a/mkspecs/common/symbian/symbian-makefile.conf b/mkspecs/common/symbian/symbian-makefile.conf
index a3aade7..ab0c5b9 100644
--- a/mkspecs/common/symbian/symbian-makefile.conf
+++ b/mkspecs/common/symbian/symbian-makefile.conf
@@ -26,7 +26,6 @@ include(../../common/unix.conf)
QMAKE_PREFIX_SHLIB =
QMAKE_EXTENSION_SHLIB = dll
CONFIG *= no_plugin_name_prefix
-CONFIG += run_on_phone
QMAKE_EXTENSION_PLUGIN = dll
QMAKE_PREFIX_STATICLIB =
QMAKE_EXTENSION_STATICLIB = lib
diff --git a/mkspecs/common/symbian/symbian-mmp.conf b/mkspecs/common/symbian/symbian-mmp.conf
index 1ab228f..5a7b2d2 100644
--- a/mkspecs/common/symbian/symbian-mmp.conf
+++ b/mkspecs/common/symbian/symbian-mmp.conf
@@ -38,14 +38,22 @@ INCLUDEPATH = \
# RVCT seems to do this automatically, but WINSCW compiler does not, so add it here.
MMP_RULES += "USERINCLUDE ."
-exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v5.0.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/series60v5.0.sis) {
- S60_VERSION = 5.0
+exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v5.2.sis)|exists($${EPOCROOT}epoc32/data/z/system/install/series60v5.2.sis) {
+ S60_VERSION = 5.2 symbian3
} else {
- exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v3.2.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/series60v3.2.sis) {
- S60_VERSION = 3.2
+ exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v5.1.sis)|exists($${EPOCROOT}epoc32/data/z/system/install/series60v5.1.sis) {
+ S60_VERSION = 5.1 symbian2
} else {
- S60_VERSION = 3.1
- MMP_RULES -= PAGED BYTEPAIRCOMPRESSTARGET
+ exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v5.0.sis)|exists($${EPOCROOT}epoc32/data/z/system/install/series60v5.0.sis) {
+ S60_VERSION = 5.0
+ } else {
+ exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v3.2.sis)|exists($${EPOCROOT}epoc32/data/z/system/install/series60v3.2.sis) {
+ S60_VERSION = 3.2
+ } else {
+ S60_VERSION = 3.1
+ MMP_RULES -= PAGED BYTEPAIRCOMPRESSTARGET
+ }
+ }
}
}
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 89034ca..b037d3c 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -3,7 +3,7 @@
#
TEMPLATE = app
-CONFIG += qt warn_on release incremental link_prl sis_targets
+CONFIG += qt warn_on release incremental link_prl sis_targets run_on_phone
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
@@ -119,13 +119,14 @@ load(symbian/platform_paths)
default_deployment.pkg_prerules += pkg_depends_webkit pkg_depends_qt pkg_platform_dependencies
-# Supports S60 3.0, 3.1, 3.2 and 5.0 by default
+# Supports S60 3.0, 3.1, 3.2, 5.0 and Symbian^3 by default
pkg_platform_dependencies = \
"; Default HW/platform dependencies" \
"[0x101F7961],0,0,0,{\"S60ProductID\"}" \
"[0x102032BE],0,0,0,{\"S60ProductID\"}" \
"[0x102752AE],0,0,0,{\"S60ProductID\"}" \
"[0x1028315F],0,0,0,{\"S60ProductID\"}" \
+ "[0x20022e6d],0,0,0,{\"S60ProductID\"}" \
" "
DEPLOYMENT += default_deployment
diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf
index d2011d0..d1c7c2b 100644
--- a/mkspecs/features/qttest_p4.prf
+++ b/mkspecs/features/qttest_p4.prf
@@ -1,5 +1,5 @@
isEmpty(TEMPLATE):TEMPLATE=app
-CONFIG += qt warn_on console depend_includepath
+CONFIG += qt warn_on console depend_includepath testcase
qtAddLibrary(QtTest)
@@ -13,39 +13,5 @@ symbian:{
# prefix test binary with tst_
!contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_")
-
-check.files =
-check.path = .
-!isEmpty(DESTDIR): check.commands = cd ./$(DESTDIR) &&
-macx: check.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
-else:unix: check.commands += ./$(QMAKE_TARGET)
-else:win32: {
- CONFIG(debug, debug|release):check.commands += $(DESTDIR_TARGET)
- else:check.commands += $(DESTDIR_TARGET)
-}
-embedded: check.commands += -qws
-QMAKE_EXTRA_TARGETS += check
-
-!debug_and_release|build_pass {
- check.depends = first
-} else {
- check.CONFIG = recursive
- # In debug and release mode, only run the test once.
- # Run debug if available, release otherwise.
- debug_and_release {
- check.target = dummy_check
- check.recurse_target = check
- debug {
- real_check.depends = debug-check
- real_check.target = check
- QMAKE_EXTRA_TARGETS += real_check
- } else {
- real_check.depends = release-check
- real_check.target = check
- QMAKE_EXTRA_TARGETS += real_check
- }
- }
-}
-
target.path += $$[QT_INSTALL_PREFIX]/tests/qt4
INSTALLS += target
diff --git a/mkspecs/features/sis_targets.prf b/mkspecs/features/sis_targets.prf
index 13ee1ad..b149a22 100644
--- a/mkspecs/features/sis_targets.prf
+++ b/mkspecs/features/sis_targets.prf
@@ -1,5 +1,15 @@
# Sis file creation
-contains(TEMPLATE, app)|!count(DEPLOYMENT, 1) {
+GENERATE_SIS_TARGETS = false
+
+contains(TEMPLATE, app): GENERATE_SIS_TARGETS = true
+else:!equals(DEPLOYMENT, default_deployment) {
+ for(dep_item, $$list($$DEPLOYMENT)) {
+ dep_item_sources = $$eval($${dep_item}.sources)
+ !isEmpty(dep_item_sources): GENERATE_SIS_TARGETS = true
+ }
+}
+
+equals(GENERATE_SIS_TARGETS, true) {
symbian-abld|symbian-sbsv2 {
sis_destdir =
make_cache_name = .make.cache
@@ -129,7 +139,8 @@ contains(TEMPLATE, app)|!count(DEPLOYMENT, 1) {
} else {
# Make sure we build everything, since other sis targets in a recursive invocation
# may depend on them, even if this one is empty.
- sis_target.depends = first
+ # In abld/sbsv2, we assume that subdir has been built already, as all builds are recursive.
+ !symbian-abld:!symbian-sbsv2: sis_target.depends = first
}
sis_target.commands =
sis_target.target = sis
diff --git a/mkspecs/features/symbian/def_files.prf b/mkspecs/features/symbian/def_files.prf
index eb17402..1b8e551 100644
--- a/mkspecs/features/symbian/def_files.prf
+++ b/mkspecs/features/symbian/def_files.prf
@@ -7,7 +7,8 @@ symbian-abld|symbian-sbsv2 {
# Firstly, if the MMP_RULES already contain a defBlock variable, don't generate another one
# (this bit is slightly magic, because it depends upon everyone creating their DEFFILE statements
# in a defBlock variable; but otherwise we have to expand MMP_RULES then scan for the DEFFILE keyword)
- !contains(MMP_RULES, defBlock) {
+ # Similarly, explicit EXPORTUNFROZEN should block adding defBlock
+ !contains(MMP_RULES, defBlock):!contains(MMP_RULES, EXPORTUNFROZEN) {
# Apps are executables on Symbian, so don't have exports, and therefore don't have DEF files
# Plugins use standard DEF files, which qmake generates, so shouldn't be using these DEFFILE
# statements - they use the qmake generated statements instead
@@ -41,7 +42,7 @@ symbian-abld|symbian-sbsv2 {
}
}
-} else:contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
+} else:contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib):!contains(CONFIG, plugin) {
!isEmpty(DEF_FILE) {
defFile = $$DEF_FILE
} else {
diff --git a/mkspecs/features/symbian/def_files_disabled.prf b/mkspecs/features/symbian/def_files_disabled.prf
index 557c5e3..0344911 100644
--- a/mkspecs/features/symbian/def_files_disabled.prf
+++ b/mkspecs/features/symbian/def_files_disabled.prf
@@ -8,6 +8,6 @@ CONFIG -= def_files
!contains(TEMPLATE, app):!contains(CONFIG, plugin):!contains(CONFIG, staticlib): {
# with EXPORTUNFROZEN enabled, new exports are included in the dll and dso/lib without
# needing to run abld/sbs freeze
- MMP_RULES += EXPORTUNFROZEN
+ MMP_RULES *= EXPORTUNFROZEN
}
}
diff --git a/mkspecs/features/symbian/platform_paths.prf b/mkspecs/features/symbian/platform_paths.prf
index 0e8770d..5c190c8 100644
--- a/mkspecs/features/symbian/platform_paths.prf
+++ b/mkspecs/features/symbian/platform_paths.prf
@@ -45,8 +45,17 @@
# INCLUDEPATH += $$OS_LAYER_DBUS_SYSTEMINCLUDE
# INCLUDEPATH += $$OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
#
+# These paths are primarily meant to be used as is in bld.inf and .mmp
+# files, so they do not contain epocroot when using official symbian
+# toolchains (symbian-abld or symbian-sbsv2).
+# For makefile based mkspecs, epocroot is prepended to all paths for
+# convenience.
#
-#
+# To use paths defined here in other contexts that require epocroot to be
+# prepended always, such as exists checks, please use prependEpocroot
+# replacement function:
+#
+# exists($$prependEpocroot($$MW_LAYER_PUBLIC_EXPORT_PATH(foobar.h)))
#
# ==============================================================================
@@ -472,4 +481,13 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
STLLIB_USAGE_CW_FLAGS = "-wchar_t on"
STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED
+ # Smart prepend of EPOCROOT to a string
+ defineReplace(prependEpocroot) {
+ contains(1, ^$${EPOCROOT}) {
+ return($$1)
+ } else {
+ return($${EPOCROOT}$$replace(1,"^/",))
+ }
+ }
+
}
diff --git a/mkspecs/features/symbian/run_on_phone.prf b/mkspecs/features/symbian/run_on_phone.prf
index c4c7baf..6948a48 100644
--- a/mkspecs/features/symbian/run_on_phone.prf
+++ b/mkspecs/features/symbian/run_on_phone.prf
@@ -1,9 +1,31 @@
# make sure we have a sis file and then call 'runonphone' to execute it on the phone
-contains(TEMPLATE, app) {
- run_target.target = runonphone
- run_target.depends = sis
- run_target.commands = runonphone $(QT_RUN_ON_PHONE_OPTIONS) --sis "$${sis_destdir}$${TARGET}.sis" "$${TARGET}.exe" $(QT_RUN_OPTIONS)
+GENERATE_RUN_TARGETS = false
- QMAKE_EXTRA_TARGETS += run_target
+contains(TEMPLATE, app): GENERATE_RUN_TARGETS = true
+else:!equals(DEPLOYMENT, default_deployment) {
+ for(dep_item, $$list($$DEPLOYMENT)) {
+ dep_item_sources = $$eval($${dep_item}.sources)
+ !isEmpty(dep_item_sources): GENERATE_RUN_TARGETS = true
+ }
+}
+
+equals(GENERATE_RUN_TARGETS, true) {
+ sis_destdir = $$DESTDIR
+ !isEmpty(sis_destdir):!contains(sis_destdir, "[/\\\\]$"):sis_destdir = $${sis_destdir}/
+ contains(QMAKE_HOST.os, "Windows"):sis_destdir = $$replace(sis_destdir, "/", "\\")
+
+ contains(SYMBIAN_PLATFORMS, "WINSCW"):contains(TEMPLATE, "app") {
+ run_target.target = run
+ run_target.commands = call "$${EPOCROOT}epoc32/release/winscw/udeb/$${TARGET}.exe" $(QT_RUN_OPTIONS)
+
+ QMAKE_EXTRA_TARGETS += run_target
+ }
+
+ runonphone_target.target = runonphone
+ runonphone_target.depends = sis
+ runonphone_target.commands = runonphone $(QT_RUN_ON_PHONE_OPTIONS) --sis "$${sis_destdir}$${TARGET}.sis"
+ contains(TEMPLATE, "app"):runonphone_target.commands += "$${TARGET}.exe" $(QT_RUN_OPTIONS)
+
+ QMAKE_EXTRA_TARGETS += runonphone_target
}
diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf
index c230272..92988aa 100644
--- a/mkspecs/features/symbian/symbian_building.prf
+++ b/mkspecs/features/symbian/symbian_building.prf
@@ -96,6 +96,9 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
QMAKE_POST_LINK = $$replace(QMAKE_POST_LINK, "^@", "")
QMAKE_POST_LINK = && $$QMAKE_POST_LINK
}
+
+ contains(CONFIG, plugin):QMAKE_ELF2E32_FLAGS += --definput=plugin_commonu.def
+
# The tee and grep at the end work around the issue that elf2e32 doesn't return non-null on error.
# The comparison of dso files is to avoid extra building of modules that depend on this dso, in
# case it has not changed.
diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf
new file mode 100644
index 0000000..7a7c9e3
--- /dev/null
+++ b/mkspecs/features/testcase.prf
@@ -0,0 +1,65 @@
+!contains(TEMPLATE,subdirs) {
+
+check.files =
+check.path = .
+
+# If the test ends up in a different directory, we should cd to that directory.
+# Note that qmake modifies DESTDIR after this file is processed,
+# therefore, testing DESTDIR for emptiness is not sufficient.
+# Also note that in debug-and-release mode we don't want to cd into the debug/release
+# directory (e.g. if the test goes to foo/release/tst_thing.exe, we want to do
+# cd foo && release/tst_thing.exe ).
+MUNGED_DESTDIR=$$DESTDIR
+MUNGED_TARGET=$$TARGET
+win32:debug_and_release {
+ contains(DESTDIR,^release$)|contains(DESTDIR,^debug$):MUNGED_DESTDIR=
+
+ # In debug-and-release mode, the first ../ in TARGET breaks out of the debug/release
+ # subdirectory. However, since make's working directory is already outside of the
+ # debug/release subdirectory, this first ../ should be ignored when deciding if
+ # we have to change directory before running the test.
+ MUNGED_TARGET=$$replace(MUNGED_TARGET,^\\.\\./,)
+}
+!isEmpty(MUNGED_DESTDIR):!contains(MUNGED_DESTDIR,^\\./?):check.commands = cd $(DESTDIR) &&
+contains(MUNGED_TARGET,.*/.*):check.commands = cd $(DESTDIR) &&
+
+# Allow for a custom test runner script
+check.commands += $(TESTRUNNER)
+
+macx {
+ app_bundle: check.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
+ else: check.commands += ./$(QMAKE_TARGET)
+}
+else:unix: check.commands += ./$(QMAKE_TARGET)
+else: check.commands += $(DESTDIR_TARGET)
+
+# For Qt/Embedded, run every test app as a QWS server
+embedded: check.commands += -qws
+
+# Allow for custom arguments to tests
+check.commands += $(TESTARGS)
+QMAKE_EXTRA_TARGETS *= check
+
+!debug_and_release|build_pass {
+ check.depends = first
+} else {
+ check.CONFIG = recursive
+ # In debug and release mode, only run the test once.
+ # Run debug if available, release otherwise.
+ debug_and_release {
+ check.target = dummy_check
+ check.recurse_target = check
+ debug {
+ real_check.depends = debug-check
+ real_check.target = check
+ QMAKE_EXTRA_TARGETS += real_check
+ } else {
+ real_check.depends = release-check
+ real_check.target = check
+ QMAKE_EXTRA_TARGETS += real_check
+ }
+ }
+}
+
+}
+
diff --git a/mkspecs/linux-g++-maemo/qmake.conf b/mkspecs/linux-g++-maemo/qmake.conf
index ca201bc..cced090 100644
--- a/mkspecs/linux-g++-maemo/qmake.conf
+++ b/mkspecs/linux-g++-maemo/qmake.conf
@@ -13,9 +13,6 @@ QMAKE_INCREMENTAL_STYLE = sublib
include(../common/g++.conf)
include(../common/linux.conf)
-# Work round scratchbox not having standard paths in it's default search path
-QMAKE_LFLAGS += -Wl,-rpath-link=/lib
-QMAKE_LFLAGS += -Wl,-rpath-link=/usr/lib
# Override the default lib/include directories for scratchbox:
QMAKE_INCDIR_X11 = /usr/include/X11
diff --git a/mkspecs/modules/qt_webkit_version.pri b/mkspecs/modules/qt_webkit_version.pri
new file mode 100644
index 0000000..0370720
--- /dev/null
+++ b/mkspecs/modules/qt_webkit_version.pri
@@ -0,0 +1,2 @@
+# The version information comes from our copy of
+include($$PWD/../../src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri)
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index 1a7391b..aa55f51 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -540,7 +540,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("name", "Qt Qmake") << ";" << "\n"
<< "\t\t\t" << writeSettings("neededFileNames", QStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";" << "\n"
- << "\t\t\t" << writeSettings("shellScript", fixForOutput("make -C " + escapeFilePath(qmake_getpwd()) + " -f " + escapeFilePath(mkfile))) << ";" << "\n"
+ << "\t\t\t" << writeSettings("shellScript", fixForOutput("make -C " + escapeFilePath(qmake_getpwd()) + " -f '" + escapeFilePath(mkfile) + "'")) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
@@ -789,7 +789,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("name", "Qt Preprocessors") << ";" << "\n"
<< "\t\t\t" << writeSettings("neededFileNames", fixListForOutput("QMAKE_PBX_OBJ"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";" << "\n"
- << "\t\t\t" << writeSettings("shellScript", fixForOutput("make -C " + escapeFilePath(qmake_getpwd()) + " -f " + escapeFilePath(mkfile))) << ";" << "\n"
+ << "\t\t\t" << writeSettings("shellScript", fixForOutput("make -C " + escapeFilePath(qmake_getpwd()) + " -f '" + escapeFilePath(mkfile) + "'")) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
@@ -968,7 +968,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("name", "Qt Sublibs") << ";" << "\n"
<< "\t\t\t" << writeSettings("neededFileNames", QStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("shellPath", "/bin/sh") << "\n"
- << "\t\t\t" << writeSettings("shellScript", fixForOutput("make -C " + escapeFilePath(qmake_getpwd()) + " -f " + escapeFilePath(mkfile))) << ";" << "\n"
+ << "\t\t\t" << writeSettings("shellScript", fixForOutput("make -C " + escapeFilePath(qmake_getpwd()) + " -f '" + escapeFilePath(mkfile) + "'")) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
//LIBRARY BUILDPHASE
diff --git a/qmake/generators/symbian/symbian_makefile.h b/qmake/generators/symbian/symbian_makefile.h
index 061866a..94f0145 100644
--- a/qmake/generators/symbian/symbian_makefile.h
+++ b/qmake/generators/symbian/symbian_makefile.h
@@ -94,6 +94,8 @@ public:
}
}
+ writeCustomDefFile();
+
return T::writeMakefile(t);
}
};
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp
index aa44afc..58729d2 100644
--- a/qmake/generators/symbian/symbiancommon.cpp
+++ b/qmake/generators/symbian/symbiancommon.cpp
@@ -58,6 +58,8 @@
#define RSS_TAG_FOOTER "footer"
#define RSS_TAG_DEFAULT "default_rules" // Same as just giving rules without tag
+#define PLUGIN_COMMON_DEF_FILE_ACTUAL "plugin_commonu.def"
+
#define MANUFACTURER_NOTE_FILE "manufacturer_note.txt"
#define DEFAULT_MANUFACTURER_NOTE \
"The package is not supported for devices from this manufacturer. Please try the selfsigned " \
@@ -501,7 +503,7 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB
// Wrapped files deployment
QString currentPath = qmake_getpwd();
QString sisName = QString("%1.sis").arg(pkgTarget);
- twf << "\"" << currentPath << "/" << sisName << "\" - \"c:\\adm\\" << sisName << "\"" << endl;
+ twf << "\"" << currentPath << "/" << sisName << "\" - \"c:\\private\\2002CCCE\\import\\" << sisName << "\"" << endl;
QString bootStrapPath = QLibraryInfo::location(QLibraryInfo::PrefixPath);
bootStrapPath.append("/smartinstaller.sis");
@@ -775,6 +777,40 @@ void SymbianCommonGenerator::readRssRules(QString &numberOfIcons,
}
}
+void SymbianCommonGenerator::writeCustomDefFile()
+{
+ if (targetType == TypePlugin && !generator->project->isActiveConfig("stdbinary")) {
+ // Create custom def file for plugin
+ QFile ft(Option::output_dir + QLatin1Char('/') + QLatin1String(PLUGIN_COMMON_DEF_FILE_ACTUAL));
+
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+ QTextStream t(&ft);
+
+ t << "; ==============================================================================" << endl;
+ t << "; Generated by qmake (" << qmake_version() << ") (Qt " QT_VERSION_STR ") on: ";
+ t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
+ t << "; This file is generated by qmake and should not be modified by the" << endl;
+ t << "; user." << endl;
+ t << "; Name : " PLUGIN_COMMON_DEF_FILE_ACTUAL << endl;
+ t << "; Part of : " << generator->project->values("TARGET").join(" ") << endl;
+ t << "; Description : Fixes common plugin symbols to known ordinals" << endl;
+ t << "; Version : " << endl;
+ t << ";" << endl;
+ t << "; ==============================================================================" << "\n" << endl;
+
+ t << endl;
+
+ t << "EXPORTS" << endl;
+ t << "\tqt_plugin_query_verification_data @ 1 NONAME" << endl;
+ t << "\tqt_plugin_instance @ 2 NONAME" << endl;
+ t << endl;
+ } else {
+ PRINT_FILE_CREATE_ERROR(QString(PLUGIN_COMMON_DEF_FILE_ACTUAL))
+ }
+ }
+}
+
QStringList SymbianCommonGenerator::symbianLangCodesFromTsFiles()
{
QStringList tsfiles;
diff --git a/qmake/generators/symbian/symbiancommon.h b/qmake/generators/symbian/symbiancommon.h
index 3efe5a4..dae1e4a 100644
--- a/qmake/generators/symbian/symbiancommon.h
+++ b/qmake/generators/symbian/symbiancommon.h
@@ -81,6 +81,8 @@ protected:
QString &iconFile,
QMap<QString, QStringList> &userRssRules);
+ void writeCustomDefFile();
+
QStringList symbianLangCodesFromTsFiles();
void fillQt2S60LangMapTable();
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 1006e39..ff58270 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -55,7 +55,6 @@
#define RESOURCE_DIRECTORY_MMP "/resource/apps"
#define REGISTRATION_RESOURCE_DIRECTORY_HW "/private/10003a3f/import/apps"
#define PLUGIN_COMMON_DEF_FILE_FOR_MMP "./plugin_common.def"
-#define PLUGIN_COMMON_DEF_FILE_ACTUAL "plugin_commonu.def"
#define BLD_INF_FILENAME_LEN (sizeof(BLD_INF_FILENAME) - 1)
#define BLD_INF_RULES_BASE "BLD_INF_RULES."
@@ -264,40 +263,6 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
return true;
}
-void SymbianMakefileGenerator::writeCustomDefFile()
-{
- if (targetType == TypePlugin && !project->isActiveConfig("stdbinary")) {
- // Create custom def file for plugin
- QFile ft(Option::output_dir + QLatin1Char('/') + QLatin1String(PLUGIN_COMMON_DEF_FILE_ACTUAL));
-
- if (ft.open(QIODevice::WriteOnly)) {
- generatedFiles << ft.fileName();
- QTextStream t(&ft);
-
- t << "; ==============================================================================" << endl;
- t << "; Generated by qmake (" << qmake_version() << ") (Qt " QT_VERSION_STR ") on: ";
- t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
- t << "; This file is generated by qmake and should not be modified by the" << endl;
- t << "; user." << endl;
- t << "; Name : " PLUGIN_COMMON_DEF_FILE_ACTUAL << endl;
- t << "; Part of : " << project->values("TARGET").join(" ") << endl;
- t << "; Description : Fixes common plugin symbols to known ordinals" << endl;
- t << "; Version : " << endl;
- t << ";" << endl;
- t << "; ==============================================================================" << "\n" << endl;
-
- t << endl;
-
- t << "EXPORTS" << endl;
- t << "\tqt_plugin_query_verification_data @ 1 NONAME" << endl;
- t << "\tqt_plugin_instance @ 2 NONAME" << endl;
- t << endl;
- } else {
- PRINT_FILE_CREATE_ERROR(QString(PLUGIN_COMMON_DEF_FILE_ACTUAL))
- }
- }
-}
-
void SymbianMakefileGenerator::init()
{
MakefileGenerator::init();
@@ -1147,17 +1112,3 @@ void SymbianMakefileGenerator::generateDistcleanTargets(QTextStream& t)
t << "distclean: clean dodistclean" << endl;
t << endl;
}
-
-void SymbianMakefileGenerator::generateExecutionTargets(QTextStream& t, const QStringList& platforms)
-{
- // create execution targets
- if (targetType == TypeExe) {
- if (platforms.contains("winscw")) {
- t << "run:" << endl;
- t << "\t-call " << epocRoot() << "epoc32/release/winscw/udeb/" << fixedTarget << ".exe " << "$(QT_RUN_OPTIONS)" << endl;
- }
- t << "runonphone: sis" << endl;
- t << "\trunonphone $(QT_RUN_ON_PHONE_OPTIONS) --sis " << fixedTarget << ".sis " << fixedTarget << ".exe " << "$(QT_RUN_OPTIONS)" << endl;
- t << endl;
- }
-}
diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h
index a584a9a..9853790 100644
--- a/qmake/generators/symbian/symmake.h
+++ b/qmake/generators/symbian/symmake.h
@@ -117,8 +117,6 @@ protected:
void writeMmpFileBinaryVersionPart(QTextStream& t);
void writeMmpFileRulesPart(QTextStream& t);
- void writeCustomDefFile();
-
void appendIfnotExist(QStringList &list, QString value);
void appendIfnotExist(QStringList &list, QStringList values);
@@ -131,7 +129,6 @@ protected:
const QString& itemSuffix);
void generateDistcleanTargets(QTextStream& t);
- void generateExecutionTargets(QTextStream& t, const QStringList& platforms);
// Subclass implements
virtual void writeBldInfExtensionRulesPart(QTextStream& t, const QString &iconTargetFile) = 0;
diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp
index 7e3fb45..d60528b 100644
--- a/qmake/generators/symbian/symmake_abld.cpp
+++ b/qmake/generators/symbian/symmake_abld.cpp
@@ -409,8 +409,6 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool
t << "\t$(ABLD)" << testClause << " reallyclean " << item << " urel" << endl;
}
t << endl;
-
- generateExecutionTargets(t, debugPlatforms);
}
void SymbianAbldMakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t, const QString &iconTargetFile)
diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp
index feacbef..c2f1d1a 100644
--- a/qmake/generators/symbian/symmake_sbsv2.cpp
+++ b/qmake/generators/symbian/symmake_sbsv2.cpp
@@ -282,8 +282,6 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
t << "\t$(SBS) reallyclean -c " << item << "_urel" << testClause << endl;
}
t << endl;
-
- generateExecutionTargets(t, debugPlatforms);
}
void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t, const QString &iconTargetFile)
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index 604aa8a..1e060a0 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -674,6 +674,12 @@ bool VCCLCompilerTool::parseOption(const char* option)
if(third == 'd')
RuntimeLibrary = rtMultiThreadedDebug;
break;
+ } else if (second == 'P') {
+ if (config->CompilerVersion >= NET2005)
+ AdditionalOptions += option;
+ else
+ warn_msg(WarnLogic, "/MP option is not supported in Visual C++ < 2005, ignoring.");
+ break;
}
found = false; break;
case 'O':
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
index 022689b..b3c229e 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
@@ -1094,6 +1094,10 @@ RVCT()
#define DEFINE_STUB_FUNCTION(rtype, op) rtype JIT_STUB cti_##op(STUB_ARGS_DECLARATION)
#endif
+#if COMPILER(GCC)
+#pragma GCC visibility push(hidden)
+#endif
+
DEFINE_STUB_FUNCTION(EncodedJSValue, op_convert_this)
{
STUB_INIT_STACK_FRAME(stackFrame);
@@ -3205,6 +3209,10 @@ DEFINE_STUB_FUNCTION(EncodedJSValue, to_object)
return JSValue::encode(stackFrame.args[0].jsValue().toObject(callFrame));
}
+#if COMPILER(GCC)
+#pragma GCC visibility pop
+#endif
+
} // namespace JSC
#endif // ENABLE(JIT)
diff --git a/src/3rdparty/phonon/mmf/abstractaudioeffect.cpp b/src/3rdparty/phonon/mmf/abstractaudioeffect.cpp
index 6cfeb76..9b64ab3 100644
--- a/src/3rdparty/phonon/mmf/abstractaudioeffect.cpp
+++ b/src/3rdparty/phonon/mmf/abstractaudioeffect.cpp
@@ -184,6 +184,8 @@ int AbstractAudioEffect::effectParameterChanged(
const EffectParameter &param, const QVariant &value)
{
// Default implementation
+ Q_UNUSED(param)
+ Q_UNUSED(value)
Q_ASSERT_X(false, Q_FUNC_INFO, "Effect has no parameters");
return 0;
}
diff --git a/src/3rdparty/phonon/mmf/abstractaudioeffect.h b/src/3rdparty/phonon/mmf/abstractaudioeffect.h
index d71993b..70adcf6 100644
--- a/src/3rdparty/phonon/mmf/abstractaudioeffect.h
+++ b/src/3rdparty/phonon/mmf/abstractaudioeffect.h
@@ -118,6 +118,10 @@ private:
// for each of the effects. Using this reduces repetition of boilerplate
// in the implementations of the backend effect nodes.
+#ifdef Q_CC_NOKIAX86
+# pragma warn_illtokenpasting off
+#endif
+
#define PHONON_MMF_DEFINE_EFFECT_FUNCTIONS(Effect) \
\
void Effect##::createEffect(AudioPlayer::NativePlayer *player) \
diff --git a/src/3rdparty/phonon/mmf/audiooutput.cpp b/src/3rdparty/phonon/mmf/audiooutput.cpp
index c6be20b..3588683 100644
--- a/src/3rdparty/phonon/mmf/audiooutput.cpp
+++ b/src/3rdparty/phonon/mmf/audiooutput.cpp
@@ -78,6 +78,9 @@ bool MMF::AudioOutput::setOutputDevice(int index)
{
Q_ASSERT_X(index == AudioOutputDeviceID, Q_FUNC_INFO,
"We only support one output device, with id 0");
+#ifdef QT_NO_DEBUG
+ Q_UNUSED(index)
+#endif
return true;
}
diff --git a/src/3rdparty/phonon/mmf/bassboost.cpp b/src/3rdparty/phonon/mmf/bassboost.cpp
index c7af939..67076f6 100644
--- a/src/3rdparty/phonon/mmf/bassboost.cpp
+++ b/src/3rdparty/phonon/mmf/bassboost.cpp
@@ -49,6 +49,7 @@ const char* BassBoost::description()
bool BassBoost::getParameters(CMdaAudioOutputStream *stream,
QList<EffectParameter> &parameters)
{
+ Q_UNUSED(parameters)
QScopedPointer<CBassBoost> effect;
TRAPD(err, effect.reset(CBassBoost::NewL(*stream)));
return (KErrNone == err);
diff --git a/src/3rdparty/phonon/mmf/effectfactory.cpp b/src/3rdparty/phonon/mmf/effectfactory.cpp
index c5e33d5..4643978 100644
--- a/src/3rdparty/phonon/mmf/effectfactory.cpp
+++ b/src/3rdparty/phonon/mmf/effectfactory.cpp
@@ -183,8 +183,9 @@ EffectFactory::EffectData EffectFactory::getData()
/* defaultValue */ QVariant(bool(true)));
data.m_parameters.append(param);
- if (data.m_supported = BackendNode::getParameters
- (stream.data(), data.m_parameters)) {
+ data.m_supported = BackendNode::getParameters(stream.data(),
+ data.m_parameters);
+ if (data.m_supported) {
const QString description = QCoreApplication::translate
("Phonon::MMF::EffectFactory", BackendNode::description());
data.m_descriptions.insert("name", description);
diff --git a/src/3rdparty/phonon/mmf/loudness.cpp b/src/3rdparty/phonon/mmf/loudness.cpp
index 1079a35..ca05ab0 100644
--- a/src/3rdparty/phonon/mmf/loudness.cpp
+++ b/src/3rdparty/phonon/mmf/loudness.cpp
@@ -49,6 +49,7 @@ const char* Loudness::description()
bool Loudness::getParameters(CMdaAudioOutputStream *stream,
QList<EffectParameter> &parameters)
{
+ Q_UNUSED(parameters)
QScopedPointer<CLoudness> effect;
TRAPD(err, effect.reset(CLoudness::NewL(*stream)));
return (KErrNone == err);
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag
index 8cb0e53..125e175 100644
--- a/src/3rdparty/webkit/.tag
+++ b/src/3rdparty/webkit/.tag
@@ -1 +1 @@
-f59a934694947496cedecc5256a71bff60c43c4c
+0f8941d0dd5f947530e1dc55b859d810bba14764
diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
index 016e0dd..d9b2987 100644
--- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
@@ -1,3 +1,18 @@
+2010-06-07 Benjamin Poulain <benjamin.poulain@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Crash when compiling on Snow Leopard and running on Leopard
+ https://bugs.webkit.org/show_bug.cgi?id=31403
+
+ Disable the use of pthread_setname_np and other symbols
+ when targetting Leopard.
+
+ Use the defines TARGETING_XX instead of BUILDING_ON_XX
+ for features that cannot be used before Snow Leopard.
+
+ * wtf/Platform.h:
+
2010-04-20 Csaba Osztrogonác <ossy@webkit.org>
[Qt] Unreviewed speculative buildfix for WinCE after r57882
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
index fac477e..876e60e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
@@ -700,11 +700,11 @@
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TIMEB_H 1
-#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
+#if !defined(TARGETING_TIGER) && !defined(TARGETING_LEOPARD)
#define HAVE_DISPATCH_H 1
-#if !PLATFORM(IPHONE) && !PLATFORM(QT)
+#if !PLATFORM(IPHONE)
#define HAVE_MADV_FREE_REUSE 1
#define HAVE_MADV_FREE 1
#define HAVE_PTHREAD_SETNAME_NP 1
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index fb78e36..6aaae4f 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from
and has the sha1 checksum
- c58dc2f491a824ac56e31c440fcf7fe16dab09c4
+ f943ead2759537527faa7f3cb057d995291663b9
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index ff7d214..e04729d 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,341 @@
+2010-06-13 Noam Rosenthal <noam.rosenthal@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ [Qt] GraphicsLayer: recaching images creates an unnecessary deep copy
+ https://bugs.webkit.org/show_bug.cgi?id=40535
+
+ Made sure the painter ends its operation before copying the pixmap.
+
+ No new tests: this is an optimization.
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::GraphicsLayerQtImpl::recache):
+
+2010-03-24 Dumitru Daniliuc <dumi@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Changing the V8 and JSC implementations of
+ SQLStatementErrorCallback to interpret as false all results that
+ could be converted to a false boolean. Pretty much a revert of
+ r54981.
+
+ https://bugs.webkit.org/show_bug.cgi?id=36569
+
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
+ * bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp:
+ (WebCore::V8CustomSQLStatementErrorCallback::handleEvent):
+ * bindings/v8/custom/V8CustomVoidCallback.cpp:
+ (WebCore::invokeCallback):
+ * bindings/v8/custom/V8CustomVoidCallback.h:
+
+2010-06-13 Noam Rosenthal <noam.rosenthal@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] tests/hybridPixmap fails
+ https://bugs.webkit.org/show_bug.cgi?id=37316
+
+ The problem was that JSC::Instance::createRuntimeObject was never called.
+ This is fixed by overloading newRuntimeObject and calling Instance::createRuntimeObject
+ in between, instead of creating the runtime object directly inside the static function
+ QtPixmapInstance::createRuntimeObject, which had to be renamed as to not overshadow the virtual function.
+
+ This fixes an existing test, tests/hybridPixmap
+
+ * bridge/qt/qt_pixmapruntime.cpp:
+ (JSC::Bindings::QtPixmapInstance::newRuntimeObject):
+ (JSC::Bindings::QtPixmapInstance::createPixmapRuntimeObject):
+ * bridge/qt/qt_pixmapruntime.h:
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::convertQVariantToValue):
+
+2010-06-07 Mahesh Kulakrni <mahesh.kulkarni@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [QT] QT_BEARER flag is not enabled on S60 properly
+ https://bugs.webkit.org/show_bug.cgi?id=39357
+
+ enable QT_BEARER for all platform based on qtmobility +
+ bearer module availability or for qt 4.7+
+
+ * WebCore.pri:
+
+2010-06-09 Csaba Osztrogonác <ossy@webkit.org>
+
+ Reviewed by Dirk Schulze.
+
+ [Qt] Imperfect dependency for generated SVGNames.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=40359
+
+ * WebCore.pri: Missing dependency added.
+
+2010-06-08 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Unreviewed Buildbot fix.
+
+ Reset the Qt TextBreakIterator when reusing it.
+
+ * platform/text/qt/TextBreakIteratorQt.cpp:
+ (WebCore::setUpIterator):
+
+2010-06-08 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Antti Koivisto.
+
+ [Qt] TextBreakIterator Qt performance
+ https://bugs.webkit.org/show_bug.cgi?id=39958
+
+ Rework TextBreakIteratorQt to be more in line with the ICU version.
+
+ We now reuse iterators where ever possible. The string data is compared
+ with memcmp, which should be faster than using a hash, as you need
+ to traverse the full buffer in the case the strings don't match,
+ where as the compare would fail quickly.
+
+ * platform/text/qt/TextBreakIteratorQt.cpp:
+ (WebCore::TextBreakIterator::TextBreakIterator):
+ (WebCore::setUpIterator):
+ (WebCore::wordBreakIterator):
+ (WebCore::characterBreakIterator):
+ (WebCore::lineBreakIterator):
+ (WebCore::sentenceBreakIterator):
+
+2010-06-07 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix text selection drawing.
+ https://bugs.webkit.org/show_bug.cgi?id=40221
+
+ The regression was introduced in r60169.
+
+ * platform/graphics/qt/FontQt.cpp:
+ (WebCore::drawTextCommon):
+
+2010-06-04 No'am Rosenthal <noam.rosenthal@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Fix compilation with QT_NO_FEATURE
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ The #ifdef QT_NO_GRAPHICSEFFECT was in the wrong place, would have
+ made AC not work at all.
+
+ No new tests.
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::GraphicsLayerQtImpl::flushChanges):
+
+2010-05-24 Tasuku Suzuki <tasuku.suzuki@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Fix compilation with QT_NO_TEMPORARYFILE
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ * platform/qt/FileSystemQt.cpp:
+ (WebCore::openTemporaryFile):
+
+2010-05-21 Tasuku Suzuki <tasuku.suzuki@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix compilation with QT_NO_GRAPHICSEFFECT
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::GraphicsLayerQtImpl::flushChanges):
+
+2010-05-02 Tasuku Suzuki <tasuku.suzuki@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix compilation with QT_NO_BEARERMANAGEMENT
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ * platform/network/NetworkStateNotifier.h:
+ * platform/network/qt/NetworkStateNotifierQt.cpp:
+
+2010-05-02 Tasuku Suzuki <tasuku.suzuki@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix compilation with QT_NO_LINEEDIT
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::~RenderThemeQt):
+ (WebCore::RenderThemeQt::findFrameLineWidth):
+
+2010-06-04 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ [Qt] Compilation fails when compiling against Qt 4.7 and Qt Mobility is installed
+ https://bugs.webkit.org/show_bug.cgi?id=40116
+
+ CONFIG += mobility has the side-effect of pulling in mobility includes, which conflict
+ with Qt 4.7's bearer managenent includes and break the build.
+
+ * WebCore.pro:
+
+2010-06-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix NPAPI support on Mac OS X/Cocoa-32
+
+ qt_mac_window_for() returns a NSWindow on Cocoa, so we were
+ passing in a NSWindow instead of a WindowRef as part of the
+ NP_CGContext.
+
+ https://bugs.webkit.org/show_bug.cgi?id=38762
+
+ * WebCore.gypi: Reflect rename
+ * WebCore.pro: Reflect rename
+ * plugins/mac/PluginViewMac.cpp: Renamed to PluginViewMac.mm
+ and fix bug by getting the Carbon windowRef from the NSWindow.
+ * wscript: Reflect rename
+
+2010-06-02 Nico Weber <thakis@chromium.org>
+
+ Reviewed by Simon Fraser.
+
+ Scroll events are sent twice per keypress for ports that don't have a platformWidget scrollbar
+ https://bugs.webkit.org/show_bug.cgi?id=39918
+
+ This was regressed by http://trac.webkit.org/changeset/58615 . Fix this by slightly tweaking
+ that patch.
+
+ Test: editing/input/page-up-down-scrolls.html
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::scrollPositionChanged):
+ * page/FrameView.h:
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::valueChanged):
+ * platform/ScrollView.h:
+ (WebCore::ScrollView::repaintFixedElementsAfterScrolling):
+
+2010-06-02 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix make install on Symbian for headers in package builds when INSTALL_HEADERS is not defined
+
+ First we wrote inst_headers.output with $$[QT_INSTALL_HEADERS] and then
+ overwrote it with the $$INSTALL_HEADERS variant without checking if the
+ variable was set.
+
+ Fixed and cleaned up the logic of falling back to $$[QT_INSTALL_HEADERS].
+
+ * WebCore.pro:
+
+2010-06-01 No'am Rosenthal <noam.rosenthal@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] GraphicsLayer: warnings when reloading page
+ https://bugs.webkit.org/show_bug.cgi?id=39694
+
+ Made sure recaching and masks aren't attempted on zero-size layers.
+
+ No new tests. Old tests (e.g. LayoutTests/compositing/masks) show the problem.
+
+ * platform/graphics/qt/GraphicsLayerQt.cpp:
+ (WebCore::MaskEffectQt::draw):
+ (WebCore::GraphicsLayerQtImpl::recache):
+
+2010-05-10 Rodrigo Belem <rodrigo.belem@openbossa.org>
+
+ Reviewed by Kenneth Christiansen , Simon Hausmann and Gustavo Noronha.
+
+ [Qt, Gtk] Allows build-webkit script to receive an install prefix as parameter
+ https://bugs.webkit.org/show_bug.cgi?id=26224
+
+ This patch adds the ability, in the QtWebkit build system, to change
+ the installation path.
+
+ * WebCore.pro:
+
+2010-06-01 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Fix installation of the QtWebKit module .pri file when building inside of Qt
+
+ * WebCore.pro:
+
+2010-06-01 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix a QtWebKit.pc corruption problem.
+ https://bugs.webkit.org/show_bug.cgi?id=36826
+
+ The problem occurs while installing QtWebKit from trunk
+ or a source package.
+
+ * WebCore.pro:
+
+2010-06-01 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Fix Symbian package dependencies of apps against QtWebKit when installing into Qt
+
+ Install the versioning qt_webkit_version.pri into $$[QMAKE_MKSPECS]/modules, which is
+ where mkspecs/features/qt.prf expects it.
+
+ * WebCore.pro:
+
+2010-05-17 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Bring CanvasRenderingContext2D's createImageData() in line with HTML5 spec
+ Added createImageData(ImageData) which returns a new ImageData with the same size as the one passed.
+ Changed createImageData(width, height) to use the absolute values of width and height.
+
+ https://bugs.webkit.org/show_bug.cgi?id=39189
+
+ Spec link:
+ http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-createimagedata
+
+ Test: fast/canvas/canvas-createImageData.html
+
+ * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
+ (WebCore::JSCanvasRenderingContext2D::createImageData):
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::createImageData):
+ * html/canvas/CanvasRenderingContext2D.h:
+ * html/canvas/CanvasRenderingContext2D.idl:
+
+2010-05-16 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Properly handle invalid arguments to CanvasRenderingContext2D's getImageData() and putImageData().
+ Both should throw NOT_SUPPORTED_ERR when called with nonfinite arguments.
+ getImageData() should throw INDEX_SIZE_ERR if either width or height is 0.
+
+ https://bugs.webkit.org/show_bug.cgi?id=39175
+
+ Spec link:
+ http://www.whatwg.org/specs/web-apps/current-work/#pixel-manipulation
+
+ Test: fast/canvas/canvas-getImageData-invalid.html
+
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::createImageData):
+ (WebCore::CanvasRenderingContext2D::getImageData):
+ (WebCore::CanvasRenderingContext2D::putImageData):
+
2010-05-31 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebCore/WebCore.gypi b/src/3rdparty/webkit/WebCore/WebCore.gypi
index 1e92f1f..94a6052 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.gypi
+++ b/src/3rdparty/webkit/WebCore/WebCore.gypi
@@ -2920,7 +2920,7 @@
'plugins/gtk/xembed.h',
'plugins/mac/PluginDataMac.mm',
'plugins/mac/PluginPackageMac.cpp',
- 'plugins/mac/PluginViewMac.cpp',
+ 'plugins/mac/PluginViewMac.mm',
'plugins/qt/PluginDataQt.cpp',
'plugins/qt/PluginPackageQt.cpp',
'plugins/qt/PluginViewQt.cpp',
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pri b/src/3rdparty/webkit/WebCore/WebCore.pri
index 5f5987f..9debd6a 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pri
+++ b/src/3rdparty/webkit/WebCore/WebCore.pri
@@ -101,18 +101,19 @@ greaterThan(QT_MINOR_VERSION, 5) {
DEFINES += ENABLE_XSLT=0
}
-!CONFIG(QTDIR_build):!contains(DEFINES, ENABLE_QT_BEARER=.) {
- symbian: {
- exists($${EPOCROOT}epoc32/release/winscw/udeb/QtBearer.lib)| \
- exists($${EPOCROOT}epoc32/release/armv5/lib/QtBearer.lib) {
+# Bearer management is part of Qt 4.7
+# for older version, check for mobility with bearer
+!contains(DEFINES, ENABLE_QT_BEARER=.) {
+ !lessThan(QT_MINOR_VERSION, 7) {
+ DEFINES += ENABLE_QT_BEARER=1
+ } else {
+ load(mobilityconfig)
+ contains(MOBILITY_CONFIG, bearer) {
DEFINES += ENABLE_QT_BEARER=1
}
}
}
-# Bearer management is part of Qt 4.7
-!lessThan(QT_MINOR_VERSION, 7):!contains(DEFINES, ENABLE_QT_BEARER=.):DEFINES += ENABLE_QT_BEARER=1
-
# Enable touch event support with Qt 4.6
!lessThan(QT_MINOR_VERSION, 6): DEFINES += ENABLE_TOUCH_EVENTS=1
@@ -593,6 +594,7 @@ contains(DEFINES, ENABLE_SVG=1) {
# GENERATOR 5-C:
svgnames.output = $${WC_GENERATED_SOURCES_DIR}/SVGNames.cpp
svgnames.input = SVG_NAMES
+ svgnames.depends = $$PWD/svg/svgattrs.in
svgnames.wkScript = $$PWD/dom/make_names.pl
svgnames.commands = perl -I$$PWD/bindings/scripts $$svgnames.wkScript --tags $$PWD/svg/svgtags.in --attrs $$PWD/svg/svgattrs.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$WC_GENERATED_SOURCES_DIR
svgnames.wkExtraSources = $${WC_GENERATED_SOURCES_DIR}/SVGElementFactory.cpp $${WC_GENERATED_SOURCES_DIR}/JSSVGElementWrapperFactory.cpp
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 63e78a7..048fc93 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -74,7 +74,8 @@ CONFIG(QTDIR_build) {
!static: DEFINES += QT_MAKEDLL
symbian: TARGET =$$TARGET$${QT_LIBINFIX}
}
-include($$PWD/../WebKit/qt/qtwebkit_version.pri)
+moduleFile=$$PWD/../WebKit/qt/qt_webkit_version.pri
+include($$moduleFile)
VERSION = $${QT_WEBKIT_MAJOR_VERSION}.$${QT_WEBKIT_MINOR_VERSION}.$${QT_WEBKIT_PATCH_VERSION}
unix {
@@ -2165,7 +2166,7 @@ contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
mac {
SOURCES += \
plugins/mac/PluginPackageMac.cpp \
- plugins/mac/PluginViewMac.cpp
+ plugins/mac/PluginViewMac.mm
OBJECTIVE_SOURCES += \
platform/text/mac/StringImplMac.mm \
platform/mac/WebCoreNSStringExtras.mm
@@ -2495,8 +2496,12 @@ contains(DEFINES, ENABLE_QT_BEARER=1) {
SOURCES += \
platform/network/qt/NetworkStateNotifierQt.cpp
- CONFIG += mobility
- MOBILITY += bearer
+ # Bearer management is part of Qt 4.7, so don't accidentially
+ # pull in Qt Mobility when building against >= 4.7
+ !greaterThan(QT_MINOR_VERSION, 6) {
+ CONFIG += mobility
+ MOBILITY += bearer
+ }
}
contains(DEFINES, ENABLE_SVG=1) {
@@ -2840,24 +2845,45 @@ contains(DEFINES, ENABLE_SYMBIAN_DIALOG_PROVIDERS) {
include($$PWD/../WebKit/qt/Api/headers.pri)
HEADERS += $$WEBKIT_API_HEADERS
-!CONFIG(QTDIR_build) {
+CONFIG(QTDIR_build) {
+ modfile.files = $$moduleFile
+ modfile.path = $$[QMAKE_MKSPECS]/modules
+
+ INSTALLS += modfile
+} else {
exists($$OUTPUT_DIR/include/QtWebKit/classheaders.pri): include($$OUTPUT_DIR/include/QtWebKit/classheaders.pri)
WEBKIT_INSTALL_HEADERS = $$WEBKIT_API_HEADERS $$WEBKIT_CLASS_HEADERS
!symbian {
headers.files = $$WEBKIT_INSTALL_HEADERS
- headers.path = $$[QT_INSTALL_HEADERS]/QtWebKit
- target.path = $$[QT_INSTALL_LIBS]
- INSTALLS += target headers
+ !isEmpty(INSTALL_HEADERS): headers.path = $$INSTALL_HEADERS/QtWebKit
+ else: headers.path = $$[QT_INSTALL_HEADERS]/QtWebKit
+
+ !isEmpty(INSTALL_LIBS): target.path = $$INSTALL_LIBS
+ else: target.path = $$[QT_INSTALL_LIBS]
+
+ modfile.files = $$moduleFile
+ modfile.path = $$[QMAKE_MKSPECS]/modules
+
+ INSTALLS += target headers modfile
} else {
# INSTALLS is not implemented in qmake's s60 generators, copy headers manually
inst_headers.commands = $$QMAKE_COPY ${QMAKE_FILE_NAME} ${QMAKE_FILE_OUT}
inst_headers.input = WEBKIT_INSTALL_HEADERS
- inst_headers.output = $$[QT_INSTALL_HEADERS]/QtWebKit/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}
+
+ !isEmpty(INSTALL_HEADERS): inst_headers.output = $$INSTALL_HEADERS/QtWebKit/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}
+ else: inst_headers.output = $$[QT_INSTALL_HEADERS]/QtWebKit/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}
+
QMAKE_EXTRA_COMPILERS += inst_headers
- install.depends += compiler_inst_headers_make_all
+ inst_modfile.commands = $$inst_headers.commands
+ inst_modfile.input = moduleFile
+ inst_modfile.output = $$[QMAKE_MKSPECS]/modules
+
+ QMAKE_EXTRA_COMPILERS += inst_modfile
+
+ install.depends += compiler_inst_headers_make_all compiler_inst_modfile_make_all
QMAKE_EXTRA_TARGETS += install
}
@@ -2875,7 +2901,7 @@ HEADERS += $$WEBKIT_API_HEADERS
QMAKE_PKGCONFIG_LIBDIR = $$target.path
QMAKE_PKGCONFIG_INCDIR = $$headers.path
QMAKE_PKGCONFIG_DESTDIR = pkgconfig
- lib_replace.match = $$DESTDIR
+ lib_replace.match = $$re_escape($$DESTDIR)
lib_replace.replace = $$[QT_INSTALL_LIBS]
QMAKE_PKGCONFIG_INSTALL_REPLACE += lib_replace
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
index a271923..0254d0f 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
@@ -361,6 +361,24 @@ JSValue JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList
return jsUndefined();
}
+JSValue JSCanvasRenderingContext2D::createImageData(ExecState* exec, const ArgList& args)
+{
+ // createImageData has two variants
+ // createImageData(ImageData)
+ // createImageData(width, height)
+ CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(impl());
+ RefPtr<ImageData> imageData = 0;
+
+ ExceptionCode ec = 0;
+ if (args.size() == 1)
+ imageData = context->createImageData(toImageData(args.at(0)), ec);
+ else if (args.size() == 2)
+ imageData = context->createImageData(args.at(0).toFloat(exec), args.at(1).toFloat(exec), ec);
+
+ setDOMException(exec, ec);
+ return toJS(exec, globalObject(), WTF::getPtr(imageData));
+}
+
JSValue JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgList& args)
{
// putImageData has two variants
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
index 4d5de79..6178509 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
@@ -77,7 +77,7 @@ bool JSCustomSQLStatementErrorCallback::handleEvent(SQLTransaction* transaction,
// Therefore an exception and returning true are the same thing - so, return true on an exception
return true;
}
- return !result.isFalse();
+ return result.toBoolean(exec);
}
}
diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.cpp
index 803316d..3e6197f 100644
--- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.cpp
+++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.cpp
@@ -346,10 +346,17 @@ returnEmptyVariant:
return QVariant::fromValue<QImage>(QImage());
return QVariant();
}
-JSObject* QtPixmapInstance::createRuntimeObject(ExecState* exec, PassRefPtr<RootObject> root, const QVariant& data)
+
+RuntimeObject* QtPixmapInstance::newRuntimeObject(ExecState* exec)
+{
+ return new(exec) QtPixmapRuntimeObject(exec, this);
+}
+
+JSObject* QtPixmapInstance::createPixmapRuntimeObject(ExecState* exec, PassRefPtr<RootObject> root, const QVariant& data)
{
JSLock lock(SilenceAssertionsOnly);
- return new(exec) QtPixmapRuntimeObject(exec, new QtPixmapInstance(root, data));
+ QtPixmapInstance* instance = new QtPixmapInstance(root, data);
+ return instance->createRuntimeObject(exec);
}
bool QtPixmapInstance::canHandle(QMetaType::Type hint)
diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.h b/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.h
index a0e0e26..de1bcee 100644
--- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.h
+++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_pixmapruntime.h
@@ -42,7 +42,8 @@ public:
int height() const;
QPixmap toPixmap();
QImage toImage();
- static JSObject* createRuntimeObject(ExecState*, PassRefPtr<RootObject>, const QVariant&);
+ RuntimeObject* newRuntimeObject(ExecState* exec);
+ static JSObject* createPixmapRuntimeObject(ExecState*, PassRefPtr<RootObject>, const QVariant&);
static QVariant variantFromObject(JSObject*, QMetaType::Type hint);
static bool canHandle(QMetaType::Type hint);
};
diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp
index 4524d97..a39dc7a 100644
--- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp
+++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp
@@ -877,7 +877,7 @@ JSValue convertQVariantToValue(ExecState* exec, PassRefPtr<RootObject> root, con
}
if (QtPixmapInstance::canHandle(static_cast<QMetaType::Type>(variant.type())))
- return QtPixmapInstance::createRuntimeObject(exec, root, variant);
+ return QtPixmapInstance::createPixmapRuntimeObject(exec, root, variant);
if (type == qMetaTypeId<QWebElement>()) {
if (!root->globalObject()->inherits(&JSDOMWindow::s_info))
diff --git a/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.cpp b/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.cpp
index a991e8d..d97b54a 100644
--- a/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.cpp
+++ b/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.cpp
@@ -165,7 +165,7 @@ static const HashTableValue JSCanvasRenderingContext2DPrototypeTableValues[45] =
{ "drawImageFromRect", DontDelete|Function, (intptr_t)static_cast<NativeFunction>(jsCanvasRenderingContext2DPrototypeFunctionDrawImageFromRect), (intptr_t)0 },
{ "setShadow", DontDelete|Function, (intptr_t)static_cast<NativeFunction>(jsCanvasRenderingContext2DPrototypeFunctionSetShadow), (intptr_t)0 },
{ "createPattern", DontDelete|Function, (intptr_t)static_cast<NativeFunction>(jsCanvasRenderingContext2DPrototypeFunctionCreatePattern), (intptr_t)0 },
- { "createImageData", DontDelete|Function, (intptr_t)static_cast<NativeFunction>(jsCanvasRenderingContext2DPrototypeFunctionCreateImageData), (intptr_t)2 },
+ { "createImageData", DontDelete|Function, (intptr_t)static_cast<NativeFunction>(jsCanvasRenderingContext2DPrototypeFunctionCreateImageData), (intptr_t)0 },
{ "getImageData", DontDelete|Function, (intptr_t)static_cast<NativeFunction>(jsCanvasRenderingContext2DPrototypeFunctionGetImageData), (intptr_t)4 },
{ "putImageData", DontDelete|Function, (intptr_t)static_cast<NativeFunction>(jsCanvasRenderingContext2DPrototypeFunctionPutImageData), (intptr_t)0 },
{ 0, 0, 0, 0 }
@@ -1018,15 +1018,7 @@ JSValue JSC_HOST_CALL jsCanvasRenderingContext2DPrototypeFunctionCreateImageData
if (!thisValue.inherits(&JSCanvasRenderingContext2D::s_info))
return throwError(exec, TypeError);
JSCanvasRenderingContext2D* castedThisObj = static_cast<JSCanvasRenderingContext2D*>(asObject(thisValue));
- CanvasRenderingContext2D* imp = static_cast<CanvasRenderingContext2D*>(castedThisObj->impl());
- ExceptionCode ec = 0;
- float sw = args.at(0).toFloat(exec);
- float sh = args.at(1).toFloat(exec);
-
-
- JSC::JSValue result = toJS(exec, castedThisObj->globalObject(), WTF::getPtr(imp->createImageData(sw, sh, ec)));
- setDOMException(exec, ec);
- return result;
+ return castedThisObj->createImageData(exec, args);
}
JSValue JSC_HOST_CALL jsCanvasRenderingContext2DPrototypeFunctionGetImageData(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
diff --git a/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.h b/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.h
index 218e455..92fabb7 100644
--- a/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.h
+++ b/src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.h
@@ -61,6 +61,7 @@ public:
JSC::JSValue drawImageFromRect(JSC::ExecState*, const JSC::ArgList&);
JSC::JSValue setShadow(JSC::ExecState*, const JSC::ArgList&);
JSC::JSValue createPattern(JSC::ExecState*, const JSC::ArgList&);
+ JSC::JSValue createImageData(JSC::ExecState*, const JSC::ArgList&);
JSC::JSValue putImageData(JSC::ExecState*, const JSC::ArgList&);
protected:
static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
diff --git a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp
index 398e4d8..9cec7a9 100644
--- a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp
+++ b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp
@@ -1278,14 +1278,30 @@ static PassRefPtr<ImageData> createEmptyImageData(const IntSize& size)
return data.get();
}
+PassRefPtr<ImageData> CanvasRenderingContext2D::createImageData(PassRefPtr<ImageData> imageData, ExceptionCode& ec) const
+{
+ if (!imageData) {
+ ec = NOT_SUPPORTED_ERR;
+ return 0;
+ }
+
+ IntSize size(imageData->width(), imageData->height());
+ return createEmptyImageData(size);
+}
+
PassRefPtr<ImageData> CanvasRenderingContext2D::createImageData(float sw, float sh, ExceptionCode& ec) const
{
ec = 0;
+ if (!sw || !sh) {
+ ec = INDEX_SIZE_ERR;
+ return 0;
+ }
if (!isfinite(sw) || !isfinite(sh)) {
ec = NOT_SUPPORTED_ERR;
return 0;
}
- FloatSize unscaledSize(sw, sh);
+
+ FloatSize unscaledSize(fabs(sw), fabs(sh));
IntSize scaledSize = canvas()->convertLogicalToDevice(unscaledSize);
if (scaledSize.width() < 1)
scaledSize.setWidth(1);
@@ -1301,7 +1317,15 @@ PassRefPtr<ImageData> CanvasRenderingContext2D::getImageData(float sx, float sy,
ec = SECURITY_ERR;
return 0;
}
-
+ if (!sw || !sh) {
+ ec = INDEX_SIZE_ERR;
+ return 0;
+ }
+ if (!isfinite(sx) || !isfinite(sy) || !isfinite(sw) || !isfinite(sh)) {
+ ec = NOT_SUPPORTED_ERR;
+ return 0;
+ }
+
FloatRect unscaledRect(sx, sy, sw, sh);
IntRect scaledRect = canvas()->convertLogicalToDevice(unscaledRect);
if (scaledRect.width() < 1)
@@ -1332,7 +1356,7 @@ void CanvasRenderingContext2D::putImageData(ImageData* data, float dx, float dy,
}
if (!isfinite(dx) || !isfinite(dy) || !isfinite(dirtyX) ||
!isfinite(dirtyY) || !isfinite(dirtyWidth) || !isfinite(dirtyHeight)) {
- ec = INDEX_SIZE_ERR;
+ ec = NOT_SUPPORTED_ERR;
return;
}
diff --git a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.h b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.h
index 553ffd2..2220f7e 100644
--- a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.h
+++ b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.h
@@ -178,6 +178,7 @@ namespace WebCore {
PassRefPtr<CanvasPattern> createPattern(HTMLImageElement*, const String& repetitionType, ExceptionCode&);
PassRefPtr<CanvasPattern> createPattern(HTMLCanvasElement*, const String& repetitionType, ExceptionCode&);
+ PassRefPtr<ImageData> createImageData(PassRefPtr<ImageData> imageData, ExceptionCode&) const;
PassRefPtr<ImageData> createImageData(float width, float height, ExceptionCode&) const;
PassRefPtr<ImageData> getImageData(float sx, float sy, float sw, float sh, ExceptionCode&) const;
void putImageData(ImageData*, float dx, float dy, ExceptionCode&);
diff --git a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.idl b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.idl
index f93a752..3f7ead7 100644
--- a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.idl
+++ b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.idl
@@ -105,13 +105,12 @@ module html {
[Custom] void drawImageFromRect(/* 10 */);
[Custom] void setShadow(/* 3 */);
[Custom] void createPattern(/* 2 */);
+ [Custom] ImageData createImageData(/* 3 */);
attribute [Custom] custom strokeStyle;
attribute [Custom] custom fillStyle;
// pixel manipulation
- ImageData createImageData(in float sw, in float sh)
- raises (DOMException);
ImageData getImageData(in float sx, in float sy, in float sw, in float sh)
raises(DOMException);
[Custom] void putImageData(/* in ImageData imagedata, in float dx, in float dy [, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight] */);
diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/WebCore/page/FrameView.cpp
index 39c92de..bc0519f 100644
--- a/src/3rdparty/webkit/WebCore/page/FrameView.cpp
+++ b/src/3rdparty/webkit/WebCore/page/FrameView.cpp
@@ -1060,7 +1060,11 @@ void FrameView::setScrollPosition(const IntPoint& scrollPoint)
void FrameView::scrollPositionChanged()
{
frame()->eventHandler()->sendScrollEvent();
+ repaintFixedElementsAfterScrolling();
+}
+void FrameView::repaintFixedElementsAfterScrolling()
+{
// For fixed position elements, update widget positions and compositing layers after scrolling,
// but only if we're not inside of layout.
// FIXME: we could skip this if we knew the page had no fixed position elements.
diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.h b/src/3rdparty/webkit/WebCore/page/FrameView.h
index 7119975..71e2966 100644
--- a/src/3rdparty/webkit/WebCore/page/FrameView.h
+++ b/src/3rdparty/webkit/WebCore/page/FrameView.h
@@ -139,7 +139,8 @@ public:
virtual void scrollRectIntoViewRecursively(const IntRect&);
virtual void setScrollPosition(const IntPoint&);
- virtual void scrollPositionChanged();
+ void scrollPositionChanged();
+ virtual void repaintFixedElementsAfterScrolling();
String mediaType() const;
void setMediaType(const String&);
diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
index e50ab55..5753e1d 100644
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
@@ -292,7 +292,7 @@ void ScrollView::valueChanged(Scrollbar* scrollbar)
if (scrollbarsSuppressed())
return;
- scrollPositionChanged();
+ repaintFixedElementsAfterScrolling();
scrollContents(scrollDelta);
}
diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.h b/src/3rdparty/webkit/WebCore/platform/ScrollView.h
index 118a310..0f79fa8 100644
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.h
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.h
@@ -303,7 +303,7 @@ private:
void updateScrollbars(const IntSize& desiredOffset);
// Called when the scroll position within this view changes. FrameView overrides this to generate repaint invalidations.
- virtual void scrollPositionChanged() {}
+ virtual void repaintFixedElementsAfterScrolling() {}
void platformInit();
void platformDestroy();
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
index b707f9d..ae1033e 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
@@ -146,6 +146,7 @@ void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const Float
line.draw(p, pt);
p->restore();
}
+ p->setPen(textFillPen);
line.draw(p, pt);
p->restore();
return;
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
index 02bf25e..ad2ec9c 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
@@ -43,6 +43,7 @@
namespace WebCore {
+#ifndef QT_NO_GRAPHICSEFFECT
class MaskEffectQt : public QGraphicsEffect {
public:
MaskEffectQt(QObject* parent, QGraphicsItem* maskLayer)
@@ -57,7 +58,12 @@ public:
// It's more efficient to do it this way because
// (a) we don't need the QBrush abstraction - we always end up using QGraphicsItem::paint from the mask layer
// (b) QGraphicsOpacityEffect detaches the pixmap, which is inefficient on OpenGL.
- QPixmap maskPixmap(sourceBoundingRect().toAlignedRect().size());
+ const QSize maskSize = sourceBoundingRect().toAlignedRect().size();
+ if (!maskSize.isValid() || maskSize.isEmpty()) {
+ drawSource(painter);
+ return;
+ }
+ QPixmap maskPixmap(maskSize);
// we need to do this so the pixmap would have hasAlpha()
maskPixmap.fill(Qt::transparent);
@@ -91,6 +97,7 @@ public:
QGraphicsItem* m_maskLayer;
};
+#endif // QT_NO_GRAPHICSEFFECT
class GraphicsLayerQtImpl : public QGraphicsObject {
Q_OBJECT
@@ -179,7 +186,9 @@ public:
TransformationMatrix m_transformRelativeToRootLayer;
bool m_transformAnimationRunning;
bool m_opacityAnimationRunning;
+#ifndef QT_NO_GRAPHICSEFFECT
QWeakPointer<MaskEffectQt> m_maskEffect;
+#endif
struct ContentData {
QPixmap pixmap;
@@ -294,7 +303,7 @@ const GraphicsLayerQtImpl* GraphicsLayerQtImpl::rootLayer() const
QPixmap GraphicsLayerQtImpl::recache(const QRegion& regionToUpdate)
{
- if (!m_layer->drawsContent())
+ if (!m_layer->drawsContent() || m_size.isEmpty() ||!m_size.isValid())
return QPixmap();
QRegion region = regionToUpdate;
@@ -321,6 +330,7 @@ QPixmap GraphicsLayerQtImpl::recache(const QRegion& regionToUpdate)
// Render the actual contents into the cache
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
m_layer->paintGraphicsLayerContents(gc, region.boundingRect());
+ painter.end();
m_backingStoreKey = QPixmapCache::insert(pixmap);
return pixmap;
@@ -515,6 +525,7 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform
// we can't paint here, because we don't know if the mask layer
// itself is ready... we'll have to wait till this layer tries to paint
setFlag(ItemClipsChildrenToShape, m_layer->maskLayer() || m_layer->masksToBounds());
+#ifndef QT_NO_GRAPHICSEFFECT
setGraphicsEffect(0);
if (m_layer->maskLayer()) {
if (GraphicsLayerQtImpl* mask = qobject_cast<GraphicsLayerQtImpl*>(m_layer->maskLayer()->platformLayer()->toGraphicsObject())) {
@@ -522,6 +533,7 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform
setGraphicsEffect(mask->m_maskEffect.data());
}
}
+#endif
}
if (m_changeMask & SizeChange) {
@@ -596,11 +608,15 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform
if ((m_changeMask & ContentsOpaqueChange) && m_state.contentsOpaque != m_layer->contentsOpaque())
prepareGeometryChange();
+#ifndef QT_NO_GRAPHICSEFFECT
if (m_maskEffect)
m_maskEffect.data()->update();
- else if (m_changeMask & DisplayChange) {
- // Recache now: all the content is ready and we don't want to wait until the paint event. We only need to do this for HTML content,
- // there's no point in caching directly composited content like images or solid rectangles.
+ else
+#endif
+ if (m_changeMask & DisplayChange) {
+ // Recache now: all the content is ready and we don't want to wait until the paint event.
+ // We only need to do this for HTML content, there's no point in caching directly composited
+ // content like images or solid rectangles.
if (m_pendingContent.contentType == HTMLContentType)
recache(m_pendingContent.regionToUpdate);
update(m_pendingContent.regionToUpdate.boundingRect());
diff --git a/src/3rdparty/webkit/WebCore/platform/network/NetworkStateNotifier.h b/src/3rdparty/webkit/WebCore/platform/network/NetworkStateNotifier.h
index 781259c..d1f2db4 100644
--- a/src/3rdparty/webkit/WebCore/platform/network/NetworkStateNotifier.h
+++ b/src/3rdparty/webkit/WebCore/platform/network/NetworkStateNotifier.h
@@ -44,6 +44,15 @@ typedef const struct __SCDynamicStore * SCDynamicStoreRef;
#include <windows.h>
+#elif PLATFORM(QT)
+
+#include <QtCore/qglobal.h>
+
+#ifdef QT_NO_BEARERMANAGEMENT
+#undef ENABLE_QT_BEARER
+#define ENABLE_QT_BEARER 0
+#endif
+
#endif
namespace WebCore {
diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierQt.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierQt.cpp
index 52512aa..3aae92a 100644
--- a/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/network/qt/NetworkStateNotifierQt.cpp
@@ -20,6 +20,8 @@
#include "config.h"
#include "NetworkStateNotifier.h"
+#if PLATFORM(QT) && ENABLE(QT_BEARER)
+
#include "NetworkStateNotifierPrivate.h"
#include "qnetworkconfigmanager.h"
@@ -89,4 +91,6 @@ void NetworkStateNotifier::setNetworkAccessAllowed(bool isAllowed)
} // namespace WebCore
+#endif
+
#include "moc_NetworkStateNotifierPrivate.cpp"
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/FileSystemQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/FileSystemQt.cpp
index f9ced98..54ecbf1 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/FileSystemQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/FileSystemQt.cpp
@@ -117,6 +117,7 @@ Vector<String> listDirectory(const String& path, const String& filter)
CString openTemporaryFile(const char* prefix, PlatformFileHandle& handle)
{
+#ifndef QT_NO_TEMPORARYFILE
QTemporaryFile* tempFile = new QTemporaryFile(QLatin1String(prefix));
tempFile->setAutoRemove(false);
QFile* temp = tempFile;
@@ -124,6 +125,7 @@ CString openTemporaryFile(const char* prefix, PlatformFileHandle& handle)
handle = temp;
return String(temp->fileName()).utf8();
}
+#endif
handle = invalidPlatformFileHandle;
return CString();
}
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
index 577903b..08b7aca 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
@@ -163,7 +163,9 @@ RenderThemeQt::RenderThemeQt(Page* page)
RenderThemeQt::~RenderThemeQt()
{
delete m_fallbackStyle;
+#ifndef QT_NO_LINEEDIT
delete m_lineEdit;
+#endif
}
#if USE(QT_MOBILE_THEME)
@@ -264,11 +266,17 @@ bool RenderThemeQt::supportsControlTints() const
int RenderThemeQt::findFrameLineWidth(QStyle* style) const
{
+#ifndef QT_NO_LINEEDIT
if (!m_lineEdit)
m_lineEdit = new QLineEdit();
+#endif
QStyleOptionFrameV2 opt;
- return style->pixelMetric(QStyle::PM_DefaultFrameWidth, &opt, m_lineEdit);
+ QWidget* widget = 0;
+#ifndef QT_NO_LINEEDIT
+ widget = m_lineEdit;
+#endif
+ return style->pixelMetric(QStyle::PM_DefaultFrameWidth, &opt, widget);
}
static QRect inflateButtonRect(const QRect& originalRect, QStyle* style)
diff --git a/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp b/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp
index 5a8a812..dda443f 100644
--- a/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp
@@ -33,31 +33,49 @@
namespace WebCore {
+ static unsigned char buffer[1024];
+
class TextBreakIterator : public QTextBoundaryFinder {
+ public:
+ TextBreakIterator(QTextBoundaryFinder::BoundaryType type, const UChar* string, int length)
+ : QTextBoundaryFinder(type, (const QChar*)string, length, buffer, sizeof(buffer))
+ , length(length)
+ , string(string) {}
+ TextBreakIterator()
+ : QTextBoundaryFinder()
+ , length(0)
+ , string(0) {}
+
+ int length;
+ const UChar* string;
};
- static QTextBoundaryFinder* iterator = 0;
- static unsigned char buffer[1024];
- TextBreakIterator* wordBreakIterator(const UChar* string, int length)
+ TextBreakIterator* setUpIterator(TextBreakIterator& iterator, QTextBoundaryFinder::BoundaryType type, const UChar* string, int length)
{
if (!string || !length)
return 0;
- if (!iterator)
- iterator = new QTextBoundaryFinder;
- *iterator = QTextBoundaryFinder(QTextBoundaryFinder::Word, (const QChar *)string, length, buffer, sizeof(buffer));
- return static_cast<TextBreakIterator*>(iterator);
+ if (iterator.isValid() && type == iterator.type() && length == iterator.length
+ && memcmp(string, iterator.string, length) == 0) {
+ iterator.toStart();
+ return &iterator;
+ }
+
+ iterator = TextBreakIterator(type, string, length);
+
+ return &iterator;
}
- TextBreakIterator* characterBreakIterator(const UChar* string, int length)
+ TextBreakIterator* wordBreakIterator(const UChar* string, int length)
{
- if (!string || !length)
- return 0;
- if (!iterator)
- iterator = new QTextBoundaryFinder;
+ static TextBreakIterator staticWordBreakIterator;
+ return setUpIterator(staticWordBreakIterator, QTextBoundaryFinder::Word, string, length);
+ }
- *iterator = QTextBoundaryFinder(QTextBoundaryFinder::Grapheme, (const QChar *)string, length, buffer, sizeof(buffer));
- return static_cast<TextBreakIterator*>(iterator);
+ TextBreakIterator* characterBreakIterator(const UChar* string, int length)
+ {
+ static TextBreakIterator staticCharacterBreakIterator;
+ return setUpIterator(staticCharacterBreakIterator, QTextBoundaryFinder::Grapheme, string, length);
}
TextBreakIterator* cursorMovementIterator(const UChar* string, int length)
@@ -67,25 +85,15 @@ namespace WebCore {
TextBreakIterator* lineBreakIterator(const UChar* string, int length)
{
- static QTextBoundaryFinder *iterator = 0;
- if (!string || !length)
- return 0;
- if (!iterator)
- iterator = new QTextBoundaryFinder;
-
- *iterator = QTextBoundaryFinder(QTextBoundaryFinder::Line, (const QChar *)string, length, buffer, sizeof(buffer));
- return static_cast<TextBreakIterator*>(iterator);
+ static TextBreakIterator staticLineBreakIterator;
+ return setUpIterator(staticLineBreakIterator, QTextBoundaryFinder::Line, string, length);
}
TextBreakIterator* sentenceBreakIterator(const UChar* string, int length)
{
- if (!string || !length)
- return 0;
- if (!iterator)
- iterator = new QTextBoundaryFinder;
+ static TextBreakIterator staticSentenceBreakIterator;
+ return setUpIterator(staticSentenceBreakIterator, QTextBoundaryFinder::Sentence, string, length);
- *iterator = QTextBoundaryFinder(QTextBoundaryFinder::Sentence, (const QChar *)string, length, buffer, sizeof(buffer));
- return static_cast<TextBreakIterator*>(iterator);
}
int textBreakFirst(TextBreakIterator* bi)
diff --git a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.mm
index 1fd4676..57d74ab 100644
--- a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp
+++ b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.mm
@@ -103,9 +103,12 @@ static inline WindowRef nativeWindowFor(PlatformWidget widget)
{
#if PLATFORM(QT)
if (widget)
+#if QT_MAC_USE_COCOA
+ return static_cast<WindowRef>([qt_mac_window_for(widget) windowRef]);
+#else
return static_cast<WindowRef>(qt_mac_window_for(widget));
#endif
-#if PLATFORM(WX)
+#elif PLATFORM(WX)
if (widget)
return (WindowRef)widget->MacGetTopLevelWindowRef();
#endif
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index 564c6fe..8c7b93d 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -1175,7 +1175,7 @@ void QWebPagePrivate::dragEnterEvent(QGraphicsSceneDragDropEvent* ev)
Qt::DropAction action = dragOpToDropAction(page->dragController()->dragEntered(&dragData));
ev->setDropAction(action);
if (action != Qt::IgnoreAction)
- ev->accept();
+ ev->acceptProposedAction();
#endif
}
@@ -1188,7 +1188,7 @@ void QWebPagePrivate::dragEnterEvent(QDragEnterEvent* ev)
ev->setDropAction(action);
// We must accept this event in order to receive the drag move events that are sent
// while the drag and drop action is in progress.
- ev->accept();
+ ev->acceptProposedAction();
#endif
}
@@ -1218,7 +1218,7 @@ void QWebPagePrivate::dragMoveEvent(QGraphicsSceneDragDropEvent* ev)
Qt::DropAction action = dragOpToDropAction(page->dragController()->dragUpdated(&dragData));
ev->setDropAction(action);
if (action != Qt::IgnoreAction)
- ev->accept();
+ ev->acceptProposedAction();
#endif
}
@@ -1232,7 +1232,7 @@ void QWebPagePrivate::dragMoveEvent(QDragMoveEvent* ev)
ev->setDropAction(action);
// We must accept this event in order to receive the drag move events that are sent
// while the drag and drop action is in progress.
- ev->accept();
+ ev->acceptProposedAction();
#endif
}
@@ -1242,7 +1242,7 @@ void QWebPagePrivate::dropEvent(QGraphicsSceneDragDropEvent* ev)
DragData dragData(ev->mimeData(), ev->pos().toPoint(),
QCursor::pos(), dropActionToDragOp(ev->possibleActions()));
if (page->dragController()->performDrag(&dragData))
- ev->accept();
+ ev->acceptProposedAction();
#endif
}
@@ -1254,7 +1254,7 @@ void QWebPagePrivate::dropEvent(QDropEvent* ev)
DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(),
dropActionToDragOp(Qt::DropAction(ev->dropAction())));
if (page->dragController()->performDrag(&dragData))
- ev->accept();
+ ev->acceptProposedAction();
#endif
}
@@ -1370,6 +1370,7 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
ev->accept();
}
+#ifndef QT_NO_PROPERTIES
void QWebPagePrivate::dynamicPropertyChangeEvent(QDynamicPropertyChangeEvent* event)
{
if (event->propertyName() == "_q_viewMode") {
@@ -1424,6 +1425,7 @@ void QWebPagePrivate::dynamicPropertyChangeEvent(QDynamicPropertyChangeEvent* ev
}
#endif
}
+#endif
void QWebPagePrivate::shortcutOverrideEvent(QKeyEvent* event)
{
@@ -2808,9 +2810,11 @@ bool QWebPage::event(QEvent *ev)
d->touchEvent(static_cast<QTouchEvent*>(ev));
break;
#endif
+#ifndef QT_NO_PROPERTIES
case QEvent::DynamicPropertyChange:
d->dynamicPropertyChangeEvent(static_cast<QDynamicPropertyChangeEvent*>(ev));
break;
+#endif
default:
return QObject::event(ev);
}
@@ -3263,6 +3267,14 @@ bool QWebPage::findText(const QString &subString, FindFlags options)
} else
return d->page->markAllMatchesForText(subString, caseSensitivity, true, 0);
} else {
+ if (subString.isEmpty()) {
+ d->page->mainFrame()->selection()->clear();
+ Frame* frame = d->page->mainFrame()->tree()->firstChild();
+ while (frame) {
+ frame->selection()->clear();
+ frame = frame->tree()->traverseNextWithWrap(false);
+ }
+ }
::FindDirection direction = ::FindDirectionForward;
if (options & FindBackward)
direction = ::FindDirectionBackward;
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h
index 5350cd9..1b90a66 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h
@@ -112,7 +112,9 @@ public:
void inputMethodEvent(QInputMethodEvent*);
+#ifndef QT_NO_PROPERTIES
void dynamicPropertyChangeEvent(QDynamicPropertyChangeEvent*);
+#endif
void shortcutOverrideEvent(QKeyEvent*);
void leaveEvent(QEvent*);
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp
index f715430..b9180be 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp
@@ -63,7 +63,7 @@
/*!
\class QWebPluginFactory::Plugin
\since 4.4
- \brief the QWebPluginFactory::Plugin structure describes the properties of a plugin a QWebPluginFactory can create.
+ \brief The QWebPluginFactory::Plugin structure describes the properties of a plugin a QWebPluginFactory can create.
\inmodule QtWebKit
*/
@@ -147,7 +147,7 @@ QWebPluginFactory::~QWebPluginFactory()
supported plugins the factory can create.
\note Currently, this function is only called when JavaScript programs
- access the global \c plugins or \c mimetypes objects.
+ access the global \c plugins or \c mimetypes objects.
*/
/*!
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
index 81823f6..a5fc794 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
@@ -48,9 +48,7 @@
#include <QUrl>
#include <QFileInfo>
-#if ENABLE(QT_BEARER)
#include "NetworkStateNotifier.h"
-#endif
void QWEBKIT_EXPORT qt_networkAccessAllowed(bool isAllowed)
{
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index b6cbf92..671acec 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,119 @@
+2010-06-09 Pierre Rossi <pierre.rossi@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ QWebPage::findText() does not clear selection when passed empty string
+ https://bugs.webkit.org/show_bug.cgi?id=31779
+
+ * Api/qwebpage.cpp:
+ (QWebPage::findText):
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::findText):
+
+2010-06-12 No'am Rosenthal <noam.rosenthal@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Add documentation to the QtWebkit bridge
+ https://bugs.webkit.org/show_bug.cgi?id=35861
+
+ The previous accepted patch was actually a faulty one; It was hard to trace since it's just a documentation
+ change. The new patch amends that, with the correct snippets and grammar fixes.
+
+ * docs/qtwebkit-bridge.qdoc:
+ * docs/webkitsnippets/qtwebkit_bridge_snippets.cpp:
+ (wrapInFunction):
+
+2010-06-11 Jesus Sanchez-Palencia <jesus@webkit.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Typo error in QWebPluginFactory Documentation
+ https://bugs.webkit.org/show_bug.cgi?id=40490
+
+ * Api/qwebpluginfactory.cpp:
+
+2010-06-10 Andy Shaw <andy.shaw@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ REGRESSION: [Qt] When dragging onto a page that handles the drag in Javascript it will be a move and not a copy by default
+ https://bugs.webkit.org/show_bug.cgi?id=40401
+
+ The correct pattern in Qt for Dnd events is to use acceptProposedAction() instead
+ of accept().
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::dragEnterEvent):
+ (QWebPagePrivate::dragMoveEvent):
+ (QWebPagePrivate::dropEvent):
+
+2010-06-02 Tasuku Suzuki <tasuku.suzuki@nokia.com>
+
+ Reviewed by Shinichiro Hamaji.
+
+ [Qt] Fix compilation with QT_NO_PROPERTIES
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ * Api/qwebpage.cpp:
+ (QWebPage::event):
+ * Api/qwebpage_p.h:
+ * WebCoreSupport/InspectorClientQt.cpp:
+ (WebCore::InspectorClientQt::openInspectorFrontend):
+
+2010-05-17 Tasuku Suzuki <tasuku.suzuki@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Fix compilation with QT_NO_COMBOBOX
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ * WebCoreSupport/ChromeClientQt.cpp:
+ (WebCore::ChromeClientQt::createSelectPopup):
+ * WebCoreSupport/QtFallbackWebPopup.cpp:
+ * WebCoreSupport/QtFallbackWebPopup.h:
+
+2010-05-02 Tasuku Suzuki <tasuku.suzuki@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix compilation with QT_NO_BEARERMANAGEMENT
+ https://bugs.webkit.org/show_bug.cgi?id=38324
+
+ * Api/qwebsettings.cpp:
+
+2010-03-24 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ Auto-uppercase and predictive text need to be disabled for S60 (as for maemo)
+ https://bugs.webkit.org/show_bug.cgi?id=33176
+
+ * WebCoreSupport/EditorClientQt.cpp:
+
+2010-06-01 Noam Rosenthal <noam.rosenthal@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Add documentation to the QtWebkit bridge
+ https://bugs.webkit.org/show_bug.cgi?id=35861
+
+ This patch includes comprehensive qdoc documentation for the QtWebkit bridge.
+
+ * docs/qtwebkit-bridge.qdoc: Added.
+ * docs/qtwebkit.qdoc:
+ * docs/webkitsnippets/doc_src_qtscript.qdoc: Added.
+ * docs/webkitsnippets/qtwebkit_bridge_snippets.cpp: Added.
+ (wrapInFunction):
+
+2010-06-01 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Rename versioning .pri file to what Qt's mkspecs/features/qt.pri expects.
+
+ * qt_webkit_version.pri: Renamed from WebKit/qt/qtwebkit_version.pri.
+
2010-05-31 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
index 4e742fc..7d1c794 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
@@ -573,8 +573,10 @@ QtAbstractWebPopup* ChromeClientQt::createSelectPopup()
{
#if defined(Q_WS_MAEMO_5)
return new QtMaemoWebPopup;
-#else
+#elif !defined(QT_NO_COMBOBOX)
return new QtFallbackWebPopup;
+#else
+ return result;
#endif
}
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
index 7b7f610..0ce6383 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
@@ -613,11 +613,11 @@ void EditorClientQt::setInputMethodState(bool active)
}
}
webPageClient->setInputMethodHint(Qt::ImhHiddenText, isPasswordField);
-#ifdef Q_WS_MAEMO_5
- // Maemo 5 MicroB Browser disables auto-uppercase and predictive text, thus, so do we.
+#if defined(Q_WS_MAEMO_5) || defined(Q_OS_SYMBIAN)
+ // disables auto-uppercase and predictive text for mobile devices
webPageClient->setInputMethodHint(Qt::ImhNoAutoUppercase, true);
webPageClient->setInputMethodHint(Qt::ImhNoPredictiveText, true);
-#endif // Q_WS_MAEMO_5
+#endif // Q_WS_MAEMO_5 || Q_OS_SYMBIAN
#endif // QT_VERSION check
webPageClient->setInputMethodEnabled(active);
}
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
index 725c5fb..2d11700 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
@@ -93,7 +93,10 @@ void InspectorClientQt::openInspectorFrontend(WebCore::InspectorController*)
// Web inspector. This is used for SDK purposes. Please keep this hook
// around and don't remove it.
// https://bugs.webkit.org/show_bug.cgi?id=35340
- QUrl inspectorUrl = inspector->property("_q_inspectorUrl").toUrl();
+ QUrl inspectorUrl;
+#ifndef QT_NO_PROPERTIES
+ inspectorUrl = inspector->property("_q_inspectorUrl").toUrl();
+#endif
if (!inspectorUrl.isValid())
inspectorUrl = QUrl("qrc:/webkit/inspector/inspector.html");
inspectorView->page()->mainFrame()->load(inspectorUrl);
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.cpp
index 7514077..26420e5 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.cpp
@@ -21,6 +21,8 @@
#include "config.h"
#include "QtFallbackWebPopup.h"
+#ifndef QT_NO_COMBOBOX
+
#include "HostWindow.h"
#include "PopupMenuClient.h"
#include "QWebPageClient.h"
@@ -225,3 +227,5 @@ void QtFallbackWebPopup::activeChanged(int index)
}
}
+
+#endif // QT_NO_COMBOBOX
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h
index 62b8aea..6d2e1ff 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/QtFallbackWebPopup.h
@@ -23,6 +23,8 @@
#include "QtAbstractWebPopup.h"
#include <QComboBox>
+#ifndef QT_NO_COMBOBOX
+
QT_BEGIN_NAMESPACE
class QGraphicsProxyWidget;
QT_END_NAMESPACE
@@ -67,4 +69,6 @@ private:
}
+#endif // QT_NO_COMBOBOX
+
#endif // QtFallbackWebPopup_h
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc
new file mode 100644
index 0000000..fa93293
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc
@@ -0,0 +1,427 @@
+/*!
+ \inmodule QtWebKit
+ \page qtwebkit-bridge.html
+ \title The QtWebKit Bridge
+ \contentspage QtWebKit
+ \section1 Overview
+ \section2 The technology
+
+ The QtWebKit bridge is a mechanism that extends WebKit's JavaScript environment to access native
+ objects that are represented as \l{QObject}s. It takes advantage of the \l{QObject} introspection,
+ a part of the \l{Qt Object Model}, which makes it easy to integrate with the dynamic JavaScript environment,
+ for example \l{QObject} properties map directly to JavaScript properties.
+
+ For example, both JavaScript and QObjects have properties: a construct that represent a getter/setter
+ pair under one name.
+
+ \section2 Use Cases
+
+ There are two main use cases for the QtWebKit bridge. Web content in a native application, and Thin Clients.
+
+ \section3 Web Content in a Native Application
+
+ This is a common use case in classic Qt application, and a design pattern used by several modern
+ applications. For example, an application that contains a media-player, playlist manager, and music store.
+ The playlist manager is usually best authored as a classic desktop application,
+ with the native-looking robust \l{QWidget}s helping with producing that application.
+ The media-player control, which usually looks custom, can be written using \l{The Graphics View framework}
+ or with in a declarative way with \l{QtDeclarative}. The music store, which shows dynamic content
+ from the internet and gets modified rapidly, is best authored in HTML and maintained on the server.
+
+ With the QtWebKit bridge, that music store component can interact with native parts of the application,
+ for example, if a file needs to be saved to a specific location.
+
+ \section3 Thin Client
+
+ Another use case is using Qt as a native backend to a full web application,
+ referred to here as a thin client. In this use-case, the entire UI is driven by
+ HTML, JavaScript and CSS, and native Qt-based components are used to allow that application
+ access to native features not usually exposed to the web, or to enable helper components that
+ are best written with C++.
+
+ An example for such a client is a UI for a video-on-demand service on a TV. The entire content and
+ UI can be kept on the server, served dynamically through HTTP and rendered with WebKit, with additional
+ native components for accessing hardware-specific features like extracting the list of images
+ out of the video.
+
+ \section2 Difference from Other Bridge Technologies
+
+ Of course QtWebKit is not the only bridge technology out there. NPAPI, for example,
+ is a long-time standard or web-native bridging. Due to Qt's meta-object system, full applications
+ built partially with web-technologies are much easier to develop. NPAPI, however, is more geared
+ towards cross-browser plugins, due to it being an accepted standard.
+
+ When developing a plugin for a browser, NPAPI is recommended. When developing a full application
+ that utilizes HTML-rendering, the QtWebKit bridge is recommended.
+
+ \section2 Relationship with QtScript
+
+ The QtWebKit bridge is similar to \l{QtScript}, especially to some of the features described in the
+ \l{Making Applications Scriptable} page. However, as of Qt 4.7, full QtScript API is not supported for web applications.
+ That is planned as an enhancement for future versions. You might notice that some of the features
+ described here are an exact copy of the ones described in the \l{Making Applications Scriptable} page. That is because
+ the QtWebKit bridge is a subset of that functionality, and this page tries to capture the full
+ capabilities available through the QtWebKit bridge specifically.
+
+ \section1 Accessing QObjects
+
+ \section2 Creating the link via QWebFrame
+
+ By default, no QObjects are accessible through the web environment, for security reasons.
+ To enable web content access for a native QObject, the application must explicitly grant it access,
+ using the following call:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 0
+
+ See \l{QWebFrame::addToJavaScriptWindowObject()} for more information.
+
+ \section2 Using Signals and Slots
+
+ The QtWebKit bridge adapts Qt's central \l{Signals and Slots} feature for
+ scripting. There are three principal ways to use signals and slots
+ with the QtWebKit bridge:
+
+ \list
+ \i \bold{Hybrid C++/script}: C++ application code connects a
+ signal to a script function. For example, the script function can be
+ a function that the user has typed in, or one that you have read from a
+ file. This approach is useful if you have a QObject but don't want
+ to expose the object itself to the scripting environment; you just
+ want a script to be able to define how a signal should be reacted
+ to, and leave it up to the C++ side of your application to establish
+ the connection.
+
+ \i \bold{Hybrid script/C++}: A script can connect signals and slots
+ to establish connections between pre-defined objects that the
+ application exposes to the scripting environment. In this scenario,
+ the slots themselves are still written in C++, but the definition of
+ the connections is fully dynamic (script-defined).
+
+ \i \bold{Purely script-defined}: A script can both define signal
+ handler functions (effectively "slots written in JavaScript"),
+ \e{and} set up the connections that utilize those handlers. For
+ example, a script can define a function that will handle the
+ QLineEdit::returnPressed() signal, and then connect that signal to the
+ script function.
+ \endlist
+
+ Note that QtScript functions such as qScriptConnect are unavilable in the web environment.
+
+ \section3 Signal to Function Connections
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 6
+
+ In this form of connection, the argument to \c{connect()} is the
+ function to connect to the signal.
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 7
+
+ The argument can be a JavaScript function, as in the above
+ example, or it can be a QObject slot, as in
+ the following example:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 8
+
+ When the argument is a QObject slot, the argument types of the
+ signal and slot do not necessarily have to be compatible;
+ If necessary, the QtWebKit bridge will, perform conversion of the signal
+ arguments to match the argument types of the slot.
+
+ To disconnect from a signal, you invoke the signal's
+ \c{disconnect()} function, passing the function to disconnect
+ as argument:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 9
+
+ When a script function is invoked in response to a signal, the
+ \c this object will be the Global Object.
+
+ \section3 Signal to Member Function Connections
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 10
+
+ In this form of the \c{connect()} function, the first argument
+ is the object that will be bound to the variable, \c this, when
+ the function specified using the second argument is invoked.
+
+ If you have a push button in a form, you typically want to do
+ something involving the form in response to the button's
+ \c{clicked} signal; passing the form as the \c this object
+ makes sense in such a case.
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 11
+
+ To disconnect from the signal, pass the same arguments to \c{disconnect()}:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 12
+
+ \section3 Signal to Named Member Function Connections
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 14
+
+ This form of the \c{connect()} function requires that the first argument is
+ the object that will be bound to the variable \c{this} when a function is
+ invoked in response to the signal. The second argument specifies the
+ name of a function that is connected to the signal, and this refers to a
+ member function of the object passed as the first argument (thisObject
+ in the above scheme).
+
+ Note that the function is resolved when the connection is made, not
+ when the signal is emitted.
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 15
+
+ To disconnect from the signal, pass the same arguments to \c{disconnect()}:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 17
+
+ \section3 Error Handling
+
+ When \c{connect()} or \c{disconnect()} succeeds, the function will
+ return \c{undefined}; otherwise, it will throw a script exception.
+ You can obtain an error message from the resulting \c{Error} object.
+ Example:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 18
+
+ \section3 Emitting Signals from Scripts
+
+ To emit a signal from script code, you simply invoke the signal
+ function, passing the relevant arguments:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 19
+
+ It is currently not possible to define a new signal in a script;
+ i.e., all signals must be defined by C++ classes.
+
+ \section3 Overloaded Signals and Slots
+
+ When a signal or slot is overloaded, the QtWebKit bridge will attempt to
+ pick the right overload based on the actual types of the QScriptValue arguments
+ involved in the function invocation. For example, if your class has slots
+ \c{myOverloadedSlot(int)} and \c{myOverloadedSlot(QString)}, the following
+ script code will behave reasonably:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 20
+
+ You can specify a particular overload by using array-style property access
+ with the \l{QMetaObject::normalizedSignature()}{normalized signature} of
+ the C++ function as the property name:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 21
+
+ If the overloads have different number of arguments, the QtWebKit bridge will
+ pick the overload with the argument count that best matches the
+ actual number of arguments passed to the slot.
+
+ For overloaded signals, JavaScript will throw an error if you try to connect
+ to the signal by name; you have to refer to the signal with the full
+ normalized signature of the particular overload you want to connect to.
+
+ \section3 Invokable Methods
+
+ Both slots and signals are invokable from script by default. In addition, it's also
+ possible to define a method that's invokable from script without it being a signal or a slot.
+ This is especially useful for functions with return types, as slots normally do not return anything
+ (it would be meaningless to return values from a slot, as the connected signals don't handle the returned data).
+ To make a non-slot method invokable, simply add the Q_INVOKABLE macro before its definition:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 22
+
+ \section2 Accessing Properties
+
+ The properties of the QObject are available as properties
+ of the corresponding JavaScript object. When you manipulate
+ a property in script code, the C++ get/set method for that
+ property will automatically be invoked. For example, if your
+ C++ class has a property declared as follows:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 23
+
+ then script code can do things like the following:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 24
+
+ \section2 Accessing Child QObjects
+
+ Every named child of the QObject (that is, for which
+ QObject::objectName() is not an empty string) is by default available as
+ a property of the JavaScript wrapper object. For example,
+ if you have a QDialog with a child widget whose \c{objectName} property is
+ \c{"okButton"}, you can access this object in script code through
+ the expression
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 25
+
+ Since \c{objectName} is itself a Q_PROPERTY, you can manipulate
+ the name in script code to, for example, rename an object:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 26
+
+ \section2 Data types
+
+ When calling slots, receiving signals or accessing properties, usually some payload is involved.
+ For example, a property "text" might return a \l{QString} parameter.
+ The QtWebKit bridge does the job of converting between a given JavaScript data-type, and the
+ expected or given Qt type. Each Qt type has a coresponding set of rules of how JavaScript treats it.
+
+ The data type conversions are also applicable for the data returned from non-void invokable methods.
+
+ \section3 Numbers
+
+ All Qt numeric data types are converted to or from a JavaScript number. These include int, short, float,
+ double, and the porable Qt types (qreal, qint etc). A special case is \l{QChar};
+ If a slot expects a QChar, the QtWebKit bridge would use the unicode value in case of a number,
+ or the first character in a string.
+
+ Note that non-standard (typedefed) number types are not automatically converted to
+ or from a JavaScript number - it's advised to use standard number types for signal, slots
+ and properties.
+
+ When a non-number is passed as an argument to a method or property that expects a number,
+ the appropriate JavaScript conversion function (parseInt / parseFloat) would be used.
+
+ \section3 Strings
+
+ When JavaScript accesses methods or properties that expect a \l{QString}, the QtWebKit bridge
+ will automatically convert the value to a string (if it is not already a string), using the
+ built-in JavaScript toString method.
+
+ When a QString is passed to JavaScript from a signal or a property, The QtWebKit bridge will
+ convert it into a JavaScript string.
+
+ \section3 Date & Time
+
+ Both \l{QDate}, \l{QTime} and \l{QDateTime} are automatically translated to or from the JavaScript
+ Date object. If a number were passed as an argument to a method that expects one of the date/time
+ types, the QtWebKit bridge would treat it as a timestamp. If a sting is passed, QtWebKit would
+ try different Qt date parsing functions to find the right one.
+
+ \section3 Regular Expressions
+
+ The QtWebKit bridge would automatically convert JavaScript RegEx object to a \l{QRegExp}.
+ If a string is passed to a method expecting a \l{QRegExp}, the string would be converted
+ to that \l{QRegExp}.
+
+ \section3 Lists
+
+ The QtWebKit bridge treats several types of lists in a special way: \l{QVariantList}, \l{QStringList},
+ \l{QObjectList} and \l{QList}<int>. When a slot or property expects one of those list types,
+ the QtWebKit bridge would try to convert a JavaScript array into that type, converting each of
+ the array's elements to the single-element type of the list.
+
+ The most useful type of list is perhaps \l{QVariantList}, which can be converted to from any
+ JavaScript array.
+
+ \section3 Compound (JSON) objects
+
+ JavaScript compound objects, also known as JSON objects, are variables that hold a list
+ of key-value pairs, where all the keys are strings and the values can have any type.
+ This translates very well to \l{QVariantMap}, which is nothing more than a \l{QMap} of \l{QString}
+ to \l{QVariant}.
+
+ The seamless conversion between JSON objects and \l{QVariantMap} allows for a very convenient
+ way of passing arbitrary structured data between C++ and the JavaScript environment. The native \l{QObject} has
+ to make sure that compound values are converted to \l{QVariantMap}s and \l{QVariantList}s, and JavaScript is
+ guaranteed to receive them in a meaningful way.
+
+ Note that types that are not supported by JSON, such as JavaScript functions and getters/setters,
+ are not converted.
+
+ \section3 QVariants
+
+ When a slot or property accepts a \l{QVariant}, the QtWebKit bridge would create a \l{QVariant} that best
+ matches the argument passed by JavaScript. A string, for example, would become a \l{QVariant} holding a \l{QString},
+ a normal JSON object would become a \l{QVariantMap}, and a JavaScript array would become a \l{QVariantList}.
+
+ Using \l{QVariant}s generously in C++ in that way makes C++ programming feel a bit more like JavaScript programming,
+ as it adds another level of indirection. Passing \l{QVariant}s around like this q is very flexible, as the program can figure out
+ the type of argument in runtime just like JavaScript would do, but it also takes away from the type-safety and robust
+ nature of C++. It's recommended to use \l{QVariant}s only for convenience high-level functions, and to keep most of your
+ \l{QObject}s somewhat type-safe.
+
+ \section3 QObjects
+
+ A pointer to a \l{QObject} or a \l{QWidget} can be passed as payload in signals, slots and properties. That object
+ can then be used like an object that's exposed directly; i.e. its slots can be invoked, its signals connected to etc.
+ However, this functionality is fairly limited - the type used has to be \l{QObject}* or \l{QWidget}*. If the type
+ specified is a pointer to a non-\l{QWidget} subclass of \l{QObject}, the QtWebKit bridge would not recognize it to be
+ a \l{QObject}.
+
+ In general its advised to use care when passing \l{QObject}s as arguments, as those objects don't become owned by
+ the JavaScript engine; That means that the application developer has to be extra careful not to try to access
+ \l{QObject}s that have already been deleted by the native environment.
+
+ \section3 Pixmaps and Images
+
+ \since 4.7
+
+ The QtWebKit bridge handles \l{QPixmap}s and \l{QImage}s in a special way. Since QtWebKit stores \l{QPixmap}s to
+ represent HTML images, \l{QPixmap}s coming from the native environment can be used directly inside WebKit.
+ A \l{QImage} or a \l{QPixmap} coming from the Qt environment would convert to an intermediate JavaScript object,
+ that can be represented like this:
+
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 1
+
+ The JavaScript environment can then use the pixmap it gets from Qt and display it inside the HTML environment,
+ by assigning it to an existing <img /> element using assignToHTMLImageElement. It can also use the toDataURL() function,
+ which allows using the pixmap as the src attribute of an image or as a background-image url. Note that the toDataURL()
+ function is costly and should be used with caution.
+
+ Example code:
+
+ C++:
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 2
+
+ HTML:
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 3
+
+ When a Qt object expects a \l{QImage} or a \l{QPixmap} as input, and the argument passed is an HTML image element,
+ the QtWebKit bridge would convert the pixmap assigned to that image element into a \l{QPixmap} or a \l{QImage}.
+
+ \since 4.7
+
+ \section3 QWebElement
+
+ A signal, slot or property that expects or returns a \l{QWebElement} can work seamlessly with JavaScript references
+ to DOM elements. The JavaScript environment can select DOM elements, keep them in variables, then pass them to Qt as
+ a \l{QWebElement}, and receive them back. Example:
+
+ C++:
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 4
+
+ HTML:
+ \snippet webkitsnippets/qtwebkit_bridge_snippets.cpp 5
+
+ This is specifically useful to create custom renderers or extensions to the web environment. Instead of forcing Qt
+ to select the element, the web environment already selects the element and then send the selected element directly to Qt.
+
+ Note that \l{QWebElement}s are not thread safe - an object handling them has to live in the UI thread.
+
+ \section1 Architecture issues
+
+ \section2 Limiting the Scope of the Hybrid Layer
+
+ When using QtWebKit's hybrid features, it is a common pitfall to make the API exposed to JavaScript very rich and
+ use all its features. This, however, leads to complexity and can create bugs that are hard to trace.
+ Instead, it is advisable to keep the hybrid layer small and manageable: create a gate only when
+ there's an actual need for it, i.e. there's a new native enabler that requires a direct interface
+ to the application layer. Sometimes new functionality is better handled internally in the native layer
+ or in the web layer; simplicity is your friend.
+
+ This usually becomes more apparent when the hybrid layer can create or destroy objects, or uses
+ signals slots or properties with a \l{QObject}* argument. It is advised to be very careful and to treat
+ an exposed \l{QObject} as a system - with careful attention to memory management and object ownership.
+
+ \section2 Internet Security
+
+ When exposing native object to an open web environment, it is importwhichant to understand the security
+ implications. Think whether the exposed object enables the web environment access to things that
+ shouldn't be open, and whether the web content loaded by that web page comes from a trusted. In general, when
+ exposing native QObjects that give the web environment access to private information or to functionality
+ that's potentially harmful to the client, such exposure should be balanced by limiting the web page's
+ access to trusted URLs only with HTTPS, and by utilizing other measures as part of a security strategy.
+
+
+
+*/
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
index c6dd550..d3f5502 100644
--- a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
+++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
@@ -20,8 +20,9 @@
scripted with JavaScript.
A bridge between the JavaScript execution environment and the Qt object
- model makes it possible for custom QObjects to be scripted. Integration
- with the Qt networking module enables Web pages to be transparently loaded
+ model makes it possible for custom QObjects to be scripted. For detailed
+ documentation see \l{The QtWebkit Bridge}.
+ Integration with the Qt networking module enables Web pages to be transparently loaded
from Web servers, the local file system or even the Qt resource system.
In addition to providing pure rendering features, HTML documents can be
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_bridge_snippets.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_bridge_snippets.cpp
new file mode 100644
index 0000000..62eeeca
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_bridge_snippets.cpp
@@ -0,0 +1,177 @@
+
+void wrapInFunction()
+{
+
+ //! [0]
+ // ...
+ QWebFrame *frame = myWebPage->mainFrame();
+ frame->addToJavaScriptWindowObject("someNameForMyObject", myObject);
+ // ...
+ //! [0]
+#if 0
+ //! [1]
+ {
+ width: ...,
+ height: ...,
+ toDataURL: function() { ... },
+ assignToHTMLImageElement: function(element) { ... }
+ }
+ //! [1]
+#endif
+ //! [2]
+ class MyObject : QObject {
+ Q_OBJECT
+ Q_PROPERTY(QPixmap myPixmap READ getPixmap)
+
+ public:
+ QPixmap getPixmap() const;
+ };
+
+ /* ... */
+
+ MyObject myObject;
+ myWebPage.mainFrame()->addToJavaScriptWindowObject("myObject", &myObject);
+
+ //! [2]
+#if 0
+ //! [3]
+ <html>
+ <head>
+ <script>
+ function loadImage() {
+ myObject.myPixmap.assignToHTMLImageElement(document.getElementById("imageElement"));
+ }
+ </script>
+ </head>
+ <body onload="loadImage()">
+ <img id="imageElement" width="300" height="200" />
+ </body>
+ </html>
+ //! [3]
+#endif
+ //! [4]
+ class MyObject : QObject {
+ Q_OBJECT
+
+ public slots:
+ void doSomethingWithWebElement(const QWebElement&);
+ };
+
+ /* ... */
+
+ MyObject myObject;
+ myWebPage.mainFrame()->addToJavaScriptWindowObject("myObject", &myObject);
+
+ //! [4]
+#if 0
+ //! [5]
+ <html>
+ <head>
+ <script>
+ function runExample() {
+ myObject.doSomethingWithWebElement(document.getElementById("someElement"));
+ }
+ </script>
+ </head>
+ <body onload="runExample()">
+ <span id="someElement">Text</span>
+ </body>
+ </html>
+ //! [5]
+ //! [6]
+ connect(function);
+ //! [6]
+ //! [7]
+ function myInterestingScriptFunction() { ... }
+ ...
+ myQObject.somethingChanged.connect(myInterestingScriptFunction);
+ //! [7]
+ //! [8]
+ myQObject.somethingChanged.connect(myOtherQObject.doSomething);
+ //! [8]
+ //! [9]
+ myQObject.somethingChanged.disconnect(myInterestingFunction);
+ myQObject.somethingChanged.disconnect(myOtherQObject.doSomething);
+ //! [9]
+ //! [10]
+ connect(thisObject, function)
+ //! [10]
+ //! [11]
+ var obj = { x: 123 };
+ var fun = function() { print(this.x); };
+ myQObject.somethingChanged.connect(obj, fun);
+ //! [11]
+ //! [12]
+ myQObject.somethingChanged.disconnect(obj, fun);
+ //! [12]
+ //! [13]
+ connect(function);
+ //! [13]
+ //! [14]
+ connect(thisObject, functionName)
+ //! [14]
+ //! [15]
+ var obj = { x: 123, fun: function() { print(this.x); } };
+ myQObject.somethingChanged.connect(obj, "fun");
+ //! [15]
+ //! [16]
+ connect(function);
+ //! [16]
+ //! [17]
+ myQObject.somethingChanged.disconnect(obj, "fun");
+ //! [17]
+ //! [18]
+ try {
+ myQObject.somethingChanged.connect(myQObject, "slotThatDoesntExist");
+ } catch (e) {
+ print(e);
+ }
+ //! [18]
+ //! [19]
+ myQObject.somethingChanged("hello");
+ //! [19]
+ //! [20]
+ myQObject.myOverloadedSlot(10); // will call the int overload
+ myQObject.myOverloadedSlot("10"); // will call the QString overload
+ //! [20]
+ //! [21]
+ myQObject['myOverloadedSlot(int)']("10"); // call int overload; the argument is converted to an int
+ myQObject['myOverloadedSlot(QString)'](10); // call QString overload; the argument is converted to a string
+ //! [21]
+ //! [22]
+ class MyObject : public QObject
+ {
+ Q_OBJECT
+
+ public:
+ Q_INVOKABLE void thisMethodIsInvokableInQtScript();
+ void thisMethodIsNotInvokableInQtScript();
+
+ ...
+ };
+ //! [22]
+ //! [23]
+ Q_PROPERTY(bool enabled READ enabled WRITE setEnabled)
+ //! [23]
+ //! [24]
+ myQObject.enabled = true;
+
+ ...
+
+ myQObject.enabled = !myQObject.enabled;
+ //! [24]
+ //! [25]
+ myQObject.enabled = true;
+
+ ...
+
+ myQObject.enabled = !myQObject.enabled;
+ //! [25]
+ //! [26]
+ myDialog.okButton
+ myDialog.okButton.objectName = "cancelButton";
+ // from now on, myDialog.cancelButton references the button
+ //! [26]
+#endif
+}
+
diff --git a/src/3rdparty/webkit/WebKit/qt/qtwebkit_version.pri b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri
index ffd192c..ffd192c 100644
--- a/src/3rdparty/webkit/WebKit/qt/qtwebkit_version.pri
+++ b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri
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 27f4b27..0f2ca22 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -122,6 +122,7 @@ private slots:
void testJSPrompt();
void showModalDialog();
void testStopScheduledPageRefresh();
+ void findText();
private:
QWebView* m_view;
@@ -2121,5 +2122,21 @@ void tst_QWebPage::testStopScheduledPageRefresh()
QCOMPARE(page2.mainFrame()->url().toString(), QString("about:blank"));
}
+void tst_QWebPage::findText()
+{
+ m_view->setHtml(QString("<html><head></head><body><div>foo bar</div></body></html>"));
+ m_page->triggerAction(QWebPage::SelectAll);
+ QVERIFY(!m_page->selectedText().isEmpty());
+ m_page->findText("");
+ QVERIFY(m_page->selectedText().isEmpty());
+ QStringList words = (QStringList() << "foo" << "bar");
+ foreach (QString subString, words) {
+ m_page->findText(subString, QWebPage::FindWrapsAroundDocument);
+ QCOMPARE(m_page->selectedText(), subString);
+ m_page->findText("");
+ QVERIFY(m_page->selectedText().isEmpty());
+ }
+}
+
QTEST_MAIN(tst_QWebPage)
#include "tst_qwebpage.moc"
diff --git a/src/corelib/global/qconfig-medium.h b/src/corelib/global/qconfig-medium.h
index ccd6759..6cb6c2c 100644
--- a/src/corelib/global/qconfig-medium.h
+++ b/src/corelib/global/qconfig-medium.h
@@ -213,6 +213,9 @@
#ifndef QT_NO_UNDOVIEW
# define QT_NO_UNDOVIEW
#endif
+#ifndef QT_NO_GESTURES
+# define QT_NO_GESTURES
+#endif
/* Widgets */
#ifndef QT_NO_LCDNUMBER
diff --git a/src/corelib/global/qconfig-minimal.h b/src/corelib/global/qconfig-minimal.h
index 99b16e8..c285e99 100644
--- a/src/corelib/global/qconfig-minimal.h
+++ b/src/corelib/global/qconfig-minimal.h
@@ -447,6 +447,9 @@
#ifndef QT_NO_UNDOVIEW
# define QT_NO_UNDOVIEW
#endif
+#ifndef QT_NO_GESTURES
+# define QT_NO_GESTURES
+#endif
/* Widgets */
#ifndef QT_NO_GROUPBOX
diff --git a/src/corelib/global/qconfig-small.h b/src/corelib/global/qconfig-small.h
index 1716b8d..dd74dcf 100644
--- a/src/corelib/global/qconfig-small.h
+++ b/src/corelib/global/qconfig-small.h
@@ -250,6 +250,9 @@
#ifndef QT_NO_SYSTEMTRAYICON
# define QT_NO_SYSTEMTRAYICON
#endif
+#ifndef QT_NO_GESTURES
+# define QT_NO_GESTURES
+#endif
/* Widgets */
#ifndef QT_NO_LCDNUMBER
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index a333153..b606843 100644
--- a/src/corelib/global/qfeatures.h
+++ b/src/corelib/global/qfeatures.h
@@ -85,6 +85,9 @@
// Freetype Font Engine
//#define QT_NO_FREETYPE
+// Gesture
+//#define QT_NO_GESTURES
+
// QGroupBox
//#define QT_NO_GROUPBOX
diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt
index 3e6af24..4d938a9 100644
--- a/src/corelib/global/qfeatures.txt
+++ b/src/corelib/global/qfeatures.txt
@@ -1185,6 +1185,12 @@ Requires: PROPERTIES
Name: State machine
SeeAlso: ???
+Feature: GESTURES
+Description: Provides a framework for gestures.
+Section: Utilities
+Requires:
+Name: Gesture
+SeeAlso: ???
# SVG
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index 08674d2..a12e121 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -236,7 +236,8 @@ public:
TextJustificationForced = 0x10000,
TextForceLeftToRight = 0x20000,
TextForceRightToLeft = 0x40000,
- TextLongestVariant = 0x80000
+ TextLongestVariant = 0x80000,
+ TextBypassShaping = 0x100000
#if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
,SingleLine = TextSingleLine,
@@ -947,6 +948,8 @@ public:
#endif
Key_MediaNext = 0x01000083,
Key_MediaRecord = 0x01000084,
+ Key_MediaPause = 0x1000085,
+ Key_MediaTogglePlayPause = 0x1000086,
Key_HomePage = 0x01000090,
Key_Favorites = 0x01000091,
Key_Search = 0x01000092,
@@ -1089,11 +1092,15 @@ public:
Key_Context2 = 0x01100001,
Key_Context3 = 0x01100002,
Key_Context4 = 0x01100003,
- Key_Call = 0x01100004,
- Key_Hangup = 0x01100005,
+ Key_Call = 0x01100004, // set absolute state to in a call (do not toggle state)
+ Key_Hangup = 0x01100005, // set absolute state to hang up (do not toggle state)
Key_Flip = 0x01100006,
- Key_Camera = 0x01100007,
- Key_CameraFocus = 0x01100008,
+ Key_ToggleCallHangup = 0x01100007, // a toggle key for answering, or hanging up, based on current call state
+ Key_VoiceDial = 0x01100008,
+ Key_LastNumberRedial = 0x01100009,
+
+ Key_Camera = 0x01100020,
+ Key_CameraFocus = 0x01100021,
Key_unknown = 0x01ffffff
};
@@ -1554,7 +1561,8 @@ public:
enum LayoutDirection {
LeftToRight,
- RightToLeft
+ RightToLeft,
+ LayoutDirectionAuto
};
enum AnchorPoint {
@@ -1719,6 +1727,7 @@ public:
};
Q_DECLARE_FLAGS(TouchPointStates, TouchPointState)
+#ifndef QT_NO_GESTURES
enum GestureState
{
NoGesture,
@@ -1748,6 +1757,7 @@ public:
IgnoredGesturesPropagateToParent = 0x04
};
Q_DECLARE_FLAGS(GestureFlags, GestureFlag)
+#endif // QT_NO_GESTURES
enum NavigationMode
{
@@ -1777,7 +1787,9 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::MatchFlags)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::TextInteractionFlags)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::InputMethodHints)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::TouchPointStates)
+#ifndef QT_NO_GESTURES
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::GestureFlags)
+#endif
typedef bool (*qInternalCallback)(void **);
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index f71ba9d..abbc03e 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -1317,7 +1317,7 @@
\value Key_Enter Typically located on the keypad.
\value Key_Insert
\value Key_Delete
- \value Key_Pause
+ \value Key_Pause The Pause/Break key (\note Not anything to do with pausing media)
\value Key_Print
\value Key_SysReq
\value Key_Clear
@@ -1615,12 +1615,14 @@
\value Key_BassDown
\value Key_TrebleUp
\value Key_TrebleDown
- \value Key_MediaPlay
- \value Key_MediaStop
+ \value Key_MediaPlay A key setting the state of the media player to play
+ \value Key_MediaStop A key setting the state of the media player to stop
\value Key_MediaPrevious
\omitvalue Key_MediaPrev
\value Key_MediaNext
\value Key_MediaRecord
+ \value Key_MediaPause A key setting the state of the media player to pause (\note not the pause/break key)
+ \value Key_MediaTogglePlayPause A key to toggle the play/pause state in the media player (rather than setting an absolute state)
\value Key_HomePage
\value Key_Favorites
\value Key_Search
@@ -1741,18 +1743,21 @@
\value Key_MediaLast
\value Key_unknown
- \value Key_Call
- \value Key_Camera
- \value Key_CameraFocus
+ \value Key_Call A key to answer or initiate a call (\see Key_ToggleCallHangup for a key to toggle current call state)
+ \value Key_Camera A key to activate the camera shutter
+ \value Key_CameraFocus A key to focus the camera
\value Key_Context1
\value Key_Context2
\value Key_Context3
\value Key_Context4
\value Key_Flip
- \value Key_Hangup
+ \value Key_Hangup A key to end an ongoing call (\see Key_ToggleCallHangup for a key to toggle current call state)
\value Key_No
\value Key_Select
\value Key_Yes
+ \value Key_ToggleCallHangup A key to toggle the current call state (ie. either answer, or hangup) depending on current call state
+ \value Key_VoiceDial
+ \value Key_LastNumberRedial
\value Key_Execute
\value Key_Printer
@@ -2567,15 +2572,23 @@
/*!
\enum Qt::LayoutDirection
- Specifies the direction of Qt's layouts:
+ Specifies the direction of Qt's layouts and text handling.
\value LeftToRight Left-to-right layout.
\value RightToLeft Right-to-left layout.
+ \value LayoutDirectionAuto Automatic layout.
Right-to-left layouts are necessary for certain languages,
notably Arabic and Hebrew.
- \sa QApplication::setLayoutDirection(), QWidget::setLayoutDirection()
+ LayoutDirectionAuto serves two purposes. When used in conjunction with widgets and layouts, it
+ will imply to use the layout direction set on the parent widget or QApplication. This
+ has the same effect as QWidget::unsetLayoutDirection().
+
+ When LayoutDirectoinAuto is used in conjunction with text layouting, it will imply that the text
+ directionality is determined from the content of the string to be layouted.
+
+ \sa QApplication::setLayoutDirection(), QWidget::setLayoutDirection(), QTextOption::setTextDirection(), QString::isRightToLeft()
*/
/*!
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 8e76e9e..ce9c57e 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -928,7 +928,7 @@ public:
}
};
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
#define QT_USE_MMAP
#endif
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index 24c26b6..b0e2f48 100644
--- a/src/corelib/kernel/qabstractitemmodel.cpp
+++ b/src/corelib/kernel/qabstractitemmodel.cpp
@@ -2508,29 +2508,35 @@ bool QAbstractItemModelPrivate::allowMove(const QModelIndex &srcParent, int star
When reimplementing a subclass, this method simplifies moving
entities in your model. This method is responsible for moving
persistent indexes in the model, which you would otherwise be
- required to do yourself.
-
- Using beginMoveRows and endMoveRows is an alternative to emitting
- layoutAboutToBeChanged and layoutChanged directly along with
- changePersistentIndexes. layoutAboutToBeChanged is emitted by
- this method for compatibility reasons.
+ required to do yourself. Using beginMoveRows and endMoveRows
+ is an alternative to emitting layoutAboutToBeChanged and
+ layoutChanged directly along with changePersistentIndexes.
+ layoutAboutToBeChanged is emitted by this method for compatibility
+ reasons.
The \a sourceParent index corresponds to the parent from which the
- rows are moved; \a sourceFirst and \a sourceLast are the row
- numbers of the rows to be moved. The \a destinationParent index
- corresponds to the parent into which the rows are moved. The \a
+ rows are moved; \a sourceFirst and \a sourceLast are the first and last
+ row numbers of the rows to be moved. The \a destinationParent index
+ corresponds to the parent into which those rows are moved. The \a
destinationChild is the row to which the rows will be moved. That
is, the index at row \a sourceFirst in \a sourceParent will become
- row \a destinationChild in \a destinationParent. Its siblings will
- be moved correspondingly.
-
- Note that \a sourceParent and \a destinationParent may be the
- same, in which case you must ensure that the \a destinationChild is
- not within the range of \a sourceFirst and \a sourceLast. You
- must also ensure that you do not attempt to move a row to one of
- its own children or ancestors. This method returns false if either
- condition is true, in which case you should abort your move
- operation.
+ row \a destinationChild in \a destinationParent, followed by all other
+ rows up to \a sourceLast.
+
+ However, when moving rows down in the same parent (\a sourceParent
+ and \a destinationParent are equal), the rows will be placed before the
+ \a destinationChild index. That is, if you wish to move rows 0 and 1 so
+ they will become rows 1 and 2, \a destinationChild should be 3. In this
+ case, the new index for the source row \c i (which is between
+ \a sourceFirst and \a sourceLast) is equal to
+ \c {(destinationChild-sourceLast-1+i)}.
+
+ Note that if \a sourceParent and \a destinationParent are the same,
+ you must ensure that the \a destinationChild is not within the range
+ of \a sourceFirst and \a sourceLast + 1. You must also ensure that you
+ do not attempt to move a row to one of its own children or ancestors.
+ This method returns false if either condition is true, in which case you
+ should abort your move operation.
\table 80%
\row
@@ -2761,29 +2767,35 @@ void QAbstractItemModel::endRemoveColumns()
When reimplementing a subclass, this method simplifies moving
entities in your model. This method is responsible for moving
persistent indexes in the model, which you would otherwise be
- required to do yourself.
-
- Using beginMoveColumns and endMoveColumns is an alternative to
- emitting layoutAboutToBeChanged and layoutChanged directly along
- with changePersistentIndexes. layoutAboutToBeChanged is emitted
- by this method for compatibility reasons.
+ required to do yourself. Using beginMoveRows and endMoveRows
+ is an alternative to emitting layoutAboutToBeChanged and
+ layoutChanged directly along with changePersistentIndexes.
+ layoutAboutToBeChanged is emitted by this method for compatibility
+ reasons.
The \a sourceParent index corresponds to the parent from which the
- columns are moved; \a sourceFirst and \a sourceLast are the column
- numbers of the columns to be moved. The \a destinationParent index
- corresponds to the parent into which the columns are moved. The \a
- destinationChild is the column to which the columns will be
- moved. That is, the index at column \a sourceFirst in \a
- sourceParent will become column \a destinationChild in \a
- destinationParent. Its siblings will be moved correspondingly.
-
- Note that \a sourceParent and \a destinationParent may be the
- same, in which case you must ensure that the \a destinationChild
- is not within the range of \a sourceFirst and \a sourceLast. You
- must also ensure that you do not attempt to move a row to one of
- its own chilren or ancestors. This method returns false if either
- condition is true, in which case you should abort your move
- operation.
+ columns are moved; \a sourceFirst and \a sourceLast are the first and last
+ column numbers of the columns to be moved. The \a destinationParent index
+ corresponds to the parent into which those columns are moved. The \a
+ destinationChild is the column to which the columns will be moved. That
+ is, the index at column \a sourceFirst in \a sourceParent will become
+ column \a destinationChild in \a destinationParent, followed by all other
+ columns up to \a sourceLast.
+
+ However, when moving columns down in the same parent (\a sourceParent
+ and \a destinationParent are equal), the columnss will be placed before the
+ \a destinationChild index. That is, if you wish to move columns 0 and 1 so
+ they will become columns 1 and 2, \a destinationChild should be 3. In this
+ case, the new index for the source column \c i (which is between
+ \a sourceFirst and \a sourceLast) is equal to
+ \c {(destinationChild-sourceLast-1+i)}.
+
+ Note that if \a sourceParent and \a destinationParent are the same,
+ you must ensure that the \a destinationChild is not within the range
+ of \a sourceFirst and \a sourceLast + 1. You must also ensure that you
+ do not attempt to move a column to one of its own children or ancestors.
+ This method returns false if either condition is true, in which case you
+ should abort your move operation.
\sa endMoveColumns()
diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h
index a20d171..9d3513a 100644
--- a/src/corelib/kernel/qcoreevent.h
+++ b/src/corelib/kernel/qcoreevent.h
@@ -275,17 +275,19 @@ public:
TouchUpdate = 195,
TouchEnd = 196,
+#ifndef QT_NO_GESTURES
NativeGesture = 197, // Internal for platform gesture support
-
+#endif
RequestSoftwareInputPanel = 199,
CloseSoftwareInputPanel = 200,
UpdateSoftKeys = 201, // Internal for compressing soft key updates
WinIdChange = 203,
+#ifndef QT_NO_GESTURES
Gesture = 198,
GestureOverride = 202,
-
+#endif
// 512 reserved for Qt Jambi's MetaCall event
// 513 reserved for Qt Jambi's DeleteOnMainThread event
@@ -327,7 +329,9 @@ private:
friend class QGraphicsView;
friend class QGraphicsViewPrivate;
friend class QGraphicsScenePrivate;
+#ifndef QT_NO_GESTURES
friend class QGestureManager;
+#endif
};
class Q_CORE_EXPORT QTimerEvent : public QEvent
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index 1cb8455..9d8ee5a 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian.cpp
+++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp
@@ -484,9 +484,9 @@ void QSelectThread::run()
} // end for
// traversed all, so update
+ updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds);
updateActivatedNotifiers(QSocketNotifier::Read, &readfds);
updateActivatedNotifiers(QSocketNotifier::Write, &writefds);
- updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds);
break;
case EINTR: // Should never occur on Symbian, but this is future proof!
@@ -496,9 +496,9 @@ void QSelectThread::run()
break;
}
} else {
+ updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds);
updateActivatedNotifiers(QSocketNotifier::Read, &readfds);
updateActivatedNotifiers(QSocketNotifier::Write, &writefds);
- updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds);
}
m_waitCond.wait(&m_mutex);
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 135ec303..cede810 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -71,10 +71,12 @@ extern uint qGlobalPostedEventsCount();
#ifndef WM_TOUCH
# define WM_TOUCH 0x0240
#endif
+#ifndef QT_NO_GESTURES
#ifndef WM_GESTURE
# define WM_GESTURE 0x0119
# define WM_GESTURENOTIFY 0x011A
#endif
+#endif // QT_NO_GESTURES
enum {
WM_QT_SOCKETNOTIFIER = WM_USER,
@@ -738,8 +740,10 @@ bool QEventDispatcherWin32::processEvents(QEventLoop::ProcessEventsFlags flags)
|| msg.message == WM_MOUSEWHEEL
|| msg.message == WM_MOUSEHWHEEL
|| msg.message == WM_TOUCH
+#ifndef QT_NO_GESTURES
|| msg.message == WM_GESTURE
|| msg.message == WM_GESTURENOTIFY
+#endif
|| msg.message == WM_CLOSE)) {
// queue user input events for later processing
haveMessage = false;
diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp
index 628afa7..c19f718 100644
--- a/src/corelib/kernel/qeventloop.cpp
+++ b/src/corelib/kernel/qeventloop.cpp
@@ -43,7 +43,7 @@
#include "qabstracteventdispatcher.h"
#include "qcoreapplication.h"
-#include "qdatetime.h"
+#include "qelapsedtimer.h"
#include "qobject_p.h"
#include <private/qthread_p.h>
@@ -247,7 +247,7 @@ void QEventLoop::processEvents(ProcessEventsFlags flags, int maxTime)
if (!d->threadData->eventDispatcher)
return;
- QTime start;
+ QElapsedTimer start;
start.start();
if (flags & DeferredDeletion)
QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index ce9ed58..6ebaaa3 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -378,6 +378,8 @@ void QMetaType::registerStreamOperators(const char *typeName, SaveOperator saveO
void QMetaType::registerStreamOperators(int idx, SaveOperator saveOp,
LoadOperator loadOp)
{
+ if (idx < User)
+ return; //builtin types should not be registered;
QVector<QCustomTypeInfo> *ct = customTypes();
if (!ct)
return;
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index ca54c6c..1321b14 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -56,7 +56,7 @@
#include "qhash.h"
#include "qtranslator_p.h"
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
#define QT_USE_MMAP
#include "private/qcore_unix_p.h"
#endif
diff --git a/src/corelib/tools/qelapsedtimer.cpp b/src/corelib/tools/qelapsedtimer.cpp
index 28dfc23..cb5e701 100644
--- a/src/corelib/tools/qelapsedtimer.cpp
+++ b/src/corelib/tools/qelapsedtimer.cpp
@@ -137,7 +137,7 @@ QT_BEGIN_NAMESPACE
used.
\value SystemTime The human-readable system time. This clock is not monotonic.
- \value MonotonicClock The system's monotonic clock, usually found in Unix systems. This clock is not monotonic and does not overflow.
+ \value MonotonicClock The system's monotonic clock, usually found in Unix systems. This clock is monotonic and does not overflow.
\value TickCounter The system's tick counter, used on Windows and Symbian systems. This clock may overflow.
\value MachAbsoluteTime The Mach kernel's absolute time (Mac OS X). This clock is monotonic and does not overflow.
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index 3374c80..0777f06 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -931,7 +931,7 @@ public:
{ return QHash<Key, T>::insertMulti(key, value); }
inline QMultiHash &operator+=(const QMultiHash &other)
- { unite(other); return *this; }
+ { this->unite(other); return *this; }
inline QMultiHash operator+(const QMultiHash &other) const
{ QMultiHash result = *this; result += other; return result; }
@@ -1006,12 +1006,7 @@ Q_INLINE_TEMPLATE int QMultiHash<Key, T>::remove(const Key &key, const T &value)
typename QHash<Key, T>::iterator end(QHash<Key, T>::end());
while (i != end && i.key() == key) {
if (i.value() == value) {
-#if defined(Q_CC_RVCT)
- // RVCT has problems with scoping, apparently.
- i = QHash<Key, T>::erase(i);
-#else
- i = erase(i);
-#endif
+ i = this->erase(i);
++n;
} else {
++i;
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index c000dc8..a51ee81 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -3478,6 +3478,25 @@ QLocale::MeasurementSystem QLocale::measurementSystem() const
}
/*!
+ \since 4.7
+
+ Returns the text direction of the language.
+*/
+Qt::LayoutDirection QLocale::textDirection() const
+{
+ Language lang = language();
+ if (lang == QLocale::Arabic ||
+ lang == QLocale::Hebrew ||
+ lang == QLocale::Persian ||
+ lang == QLocale::Urdu ||
+ lang == QLocale::Syriac)
+ return Qt::RightToLeft;
+
+ return Qt::LeftToRight;
+}
+
+
+/*!
\since 4.5
Returns the localized name of the "AM" suffix for times specified using
diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
index f2fd892..8b424bb 100644
--- a/src/corelib/tools/qlocale.h
+++ b/src/corelib/tools/qlocale.h
@@ -666,6 +666,8 @@ public:
MeasurementSystem measurementSystem() const;
+ Qt::LayoutDirection textDirection() const;
+
inline bool operator==(const QLocale &other) const;
inline bool operator!=(const QLocale &other) const;
diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h
index 5696ba6..e4b73a1 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -977,7 +977,7 @@ public:
{ return QMap<Key, T>::insertMulti(key, value); }
inline QMultiMap &operator+=(const QMultiMap &other)
- { unite(other); return *this; }
+ { this->unite(other); return *this; }
inline QMultiMap operator+(const QMultiMap &other) const
{ QMultiMap result = *this; result += other; return result; }
@@ -1052,12 +1052,7 @@ Q_INLINE_TEMPLATE int QMultiMap<Key, T>::remove(const Key &key, const T &value)
typename QMap<Key, T>::iterator end(QMap<Key, T>::end());
while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
if (i.value() == value) {
-#if defined(Q_CC_RVCT)
- // RVCT has problems with scoping, apparently.
- i = QMap<Key, T>::erase(i);
-#else
- i = erase(i);
-#endif
+ i = this->erase(i);
++n;
} else {
++i;
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 6acbcec..1d5fab3 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -113,7 +113,7 @@ int qFindStringBoyerMoore(const QChar *haystack, int haystackLen, int from,
static int ucstricmp(const ushort *a, const ushort *ae, const ushort *b, const ushort *be)
{
if (a == b)
- return 0;
+ return (ae - be);
if (a == 0)
return 1;
if (b == 0)
@@ -125,7 +125,7 @@ static int ucstricmp(const ushort *a, const ushort *ae, const ushort *b, const u
uint alast = 0;
uint blast = 0;
- while (a != e) {
+ while (a < e) {
// qDebug() << hex << alast << blast;
// qDebug() << hex << "*a=" << *a << "alast=" << alast << "folded=" << foldCase (*a, alast);
// qDebug() << hex << "*b=" << *b << "blast=" << blast << "folded=" << foldCase (*b, blast);
@@ -154,7 +154,7 @@ static int ucstricmp(const ushort *a, const ushort *ae, const uchar *b)
if (b == 0)
return -1;
- while (a != ae && *b) {
+ while (a < ae && *b) {
int diff = foldCase(*a) - foldCase(*b);
if ((diff))
return diff;
@@ -4640,9 +4640,12 @@ int QString::compare_helper(const QChar *data1, int length1, QLatin1String s2,
return length1;
if (cs == Qt::CaseSensitive) {
- while (uc != e && *c && *uc == *c)
+ while (uc < e && *c && *uc == *c)
uc++, c++;
+ if (uc == e)
+ return -*c;
+
return *uc - *c;
} else {
return ucstricmp(uc, e, c);
@@ -6913,20 +6916,23 @@ void QString::updateProperties() const
p++;
}
- p = d->data;
- d->righttoleft = false;
+ d->righttoleft = isRightToLeft();
+ d->clean = true;
+}
+
+bool QString::isRightToLeft() const
+{
+ ushort *p = d->data;
+ const ushort * const end = p + d->size;
+ bool righttoleft = false;
while (p < end) {
switch(QChar::direction(*p))
{
case QChar::DirL:
- case QChar::DirLRO:
- case QChar::DirLRE:
goto end;
case QChar::DirR:
case QChar::DirAL:
- case QChar::DirRLO:
- case QChar::DirRLE:
- d->righttoleft = true;
+ righttoleft = true;
goto end;
default:
break;
@@ -6934,8 +6940,7 @@ void QString::updateProperties() const
++p;
}
end:
- d->clean = true;
- return;
+ return righttoleft;
}
/*! \fn bool QString::isSimpleText() const
@@ -7093,7 +7098,7 @@ QString QString::fromRawData(const QChar *unicode, int size)
*/
QString &QString::setRawData(const QChar *unicode, int size)
{
- if (d->ref != 1 || d->alloc) {
+ if (d->ref != 1 || (d->data == d->array && d->alloc)) {
*this = fromRawData(unicode, size);
} else {
#ifdef QT3_SUPPORT
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index a1c4e77..e52f59f 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -590,7 +590,7 @@ public:
#endif
bool isSimpleText() const { if (!d->clean) updateProperties(); return d->simpletext; }
- bool isRightToLeft() const { if (!d->clean) updateProperties(); return d->righttoleft; }
+ bool isRightToLeft() const;
QString(int size, Qt::Initialization);
diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
index bfede94..4a6bb4b 100644
--- a/src/corelib/tools/qvarlengtharray.h
+++ b/src/corelib/tools/qvarlengtharray.h
@@ -127,6 +127,13 @@ public:
inline T *data() { return ptr; }
inline const T *data() const { return ptr; }
inline const T * constData() const { return ptr; }
+ typedef int size_type;
+ typedef T value_type;
+ typedef value_type *pointer;
+ typedef const value_type *const_pointer;
+ typedef value_type &reference;
+ typedef const value_type &const_reference;
+ typedef qptrdiff difference_type;
private:
friend class QPodList<T, Prealloc>;
diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc
index 38901e5..ef2dc58 100644
--- a/src/corelib/tools/qvarlengtharray.qdoc
+++ b/src/corelib/tools/qvarlengtharray.qdoc
@@ -302,3 +302,52 @@
\a defaultValue.
*/
+/*!
+ \typedef QVarLengthArray::size_type
+ \since 4.7
+
+ Typedef for int. Provided for STL compatibility.
+*/
+
+/*!
+ \typedef QVarLengthArray::value_type
+ \since 4.7
+
+ Typedef for T. Provided for STL compatibility.
+*/
+
+/*!
+ \typedef QVarLengthArray::difference_type
+ \since 4.7
+
+ Typedef for ptrdiff_t. Provided for STL compatibility.
+*/
+
+/*!
+ \typedef QVarLengthArray::pointer
+ \since 4.7
+
+ Typedef for T *. Provided for STL compatibility.
+*/
+
+/*!
+ \typedef QVarLengthArray::const_pointer
+ \since 4.7
+
+ Typedef for const T *. Provided for STL compatibility.
+*/
+
+/*!
+ \typedef QVarLengthArray::reference
+ \since 4.7
+
+ Typedef for T &. Provided for STL compatibility.
+*/
+
+/*!
+ \typedef QVarLengthArray::const_reference
+ \since 4.7
+
+ Typedef for const T &. Provided for STL compatibility.
+*/
+
diff --git a/src/declarative/3rdparty/3rdparty.pri b/src/declarative/3rdparty/3rdparty.pri
deleted file mode 100644
index fbdcc11..0000000
--- a/src/declarative/3rdparty/3rdparty.pri
+++ /dev/null
@@ -1,7 +0,0 @@
-INCLUDEPATH += $$PWD
-
-HEADERS += \
- $$PWD/qlistmodelinterface_p.h\
-
-SOURCES += \
- $$PWD/qlistmodelinterface.cpp \
diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt
index 0df5f10..8b6b83f 100644
--- a/src/declarative/QmlChanges.txt
+++ b/src/declarative/QmlChanges.txt
@@ -1,8 +1,9 @@
=============================================================================
The changes below are pre Qt 4.7.0 RC
+QDeclarativeView
+ - initialSize() function added
TextInput and TextEdit:
- - showInputPanelOnFocus property added
- openSoftwareInputPanel() and closeSoftwareInputPanel() functions added
Flickable:
- overShoot is replaced by boundsBehavior enumeration
diff --git a/src/declarative/debugger/qdeclarativedebugtrace_p.h b/src/declarative/debugger/qdeclarativedebugtrace_p.h
index 5ba49a8..704c49a 100644
--- a/src/declarative/debugger/qdeclarativedebugtrace_p.h
+++ b/src/declarative/debugger/qdeclarativedebugtrace_p.h
@@ -50,7 +50,7 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class QUrl;
-class QDeclarativeDebugTrace : public QDeclarativeDebugService
+class Q_AUTOTEST_EXPORT QDeclarativeDebugTrace : public QDeclarativeDebugService
{
public:
enum EventType {
diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro
index 8037a16..510e7a5 100644
--- a/src/declarative/declarative.pro
+++ b/src/declarative/declarative.pro
@@ -20,7 +20,6 @@ include(../qbase.pri)
#DESTDIR=.
#modules
-include(3rdparty/3rdparty.pri)
include(util/util.pri)
include(graphicsitems/graphicsitems.pri)
include(qml/qml.pri)
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors.cpp b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
index aa53aba..6796977 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
@@ -53,6 +53,30 @@ QT_BEGIN_NAMESPACE
//TODO: should we cache relationships, so we don't have to check each time (parent-child or sibling)?
//TODO: support non-parent, non-sibling (need to find lowest common ancestor)
+static qreal hcenter(QGraphicsItem *i)
+{
+ QGraphicsItemPrivate *item = QGraphicsItemPrivate::get(i);
+
+ qreal width = item->width();
+ int iw = width;
+ if (iw % 2)
+ return (width + 1) / 2;
+ else
+ return width / 2;
+}
+
+static qreal vcenter(QGraphicsItem *i)
+{
+ QGraphicsItemPrivate *item = QGraphicsItemPrivate::get(i);
+
+ qreal height = item->height();
+ int ih = height;
+ if (ih % 2)
+ return (height + 1) / 2;
+ else
+ return height / 2;
+}
+
//### const item?
//local position
static qreal position(QGraphicsObject *item, QDeclarativeAnchorLine::AnchorLine anchorLine)
@@ -73,10 +97,10 @@ static qreal position(QGraphicsObject *item, QDeclarativeAnchorLine::AnchorLine
ret = item->y() + d->height();
break;
case QDeclarativeAnchorLine::HCenter:
- ret = item->x() + d->width()/2;
+ ret = item->x() + hcenter(item);
break;
case QDeclarativeAnchorLine::VCenter:
- ret = item->y() + d->height()/2;
+ ret = item->y() + vcenter(item);
break;
case QDeclarativeAnchorLine::Baseline:
if (d->isDeclarativeItem)
@@ -108,10 +132,10 @@ static qreal adjustedPosition(QGraphicsObject *item, QDeclarativeAnchorLine::Anc
ret = d->height();
break;
case QDeclarativeAnchorLine::HCenter:
- ret = d->width()/2;
+ ret = hcenter(item);
break;
case QDeclarativeAnchorLine::VCenter:
- ret = d->height()/2;
+ ret = vcenter(item);
break;
case QDeclarativeAnchorLine::Baseline:
if (d->isDeclarativeItem)
@@ -192,14 +216,14 @@ void QDeclarativeAnchorsPrivate::centerInChanged()
QGraphicsItemPrivate *itemPrivate = QGraphicsItemPrivate::get(item);
if (centerIn == item->parentItem()) {
QGraphicsItemPrivate *parentPrivate = QGraphicsItemPrivate::get(item->parentItem());
- QPointF p((parentPrivate->width() - itemPrivate->width()) / 2. + hCenterOffset,
- (parentPrivate->height() - itemPrivate->height()) / 2. + vCenterOffset);
+ QPointF p(hcenter(item->parentItem()) - hcenter(item) + hCenterOffset,
+ vcenter(item->parentItem()) - vcenter(item) + vCenterOffset);
setItemPos(p);
} else if (centerIn->parentItem() == item->parentItem()) {
QGraphicsItemPrivate *centerPrivate = QGraphicsItemPrivate::get(centerIn);
- QPointF p(centerIn->x() + (centerPrivate->width() - itemPrivate->width()) / 2. + hCenterOffset,
- centerIn->y() + (centerPrivate->height() - itemPrivate->height()) / 2. + vCenterOffset);
+ QPointF p(centerIn->x() + hcenter(centerIn) - hcenter(item) + hCenterOffset,
+ centerIn->y() + vcenter(centerIn) - vcenter(item) + vCenterOffset);
setItemPos(p);
}
@@ -535,9 +559,9 @@ void QDeclarativeAnchorsPrivate::updateVerticalAnchors()
//Handle vCenter
if (vCenter.item == item->parentItem()) {
setItemY(adjustedPosition(vCenter.item, vCenter.anchorLine)
- - itemPrivate->height()/2 + vCenterOffset);
+ - vcenter(item) + vCenterOffset);
} else if (vCenter.item->parentItem() == item->parentItem()) {
- setItemY(position(vCenter.item, vCenter.anchorLine) - itemPrivate->height()/2 + vCenterOffset);
+ setItemY(position(vCenter.item, vCenter.anchorLine) - vcenter(item) + vCenterOffset);
}
} else if (usedAnchors & QDeclarativeAnchors::BaselineAnchor) {
//Handle baseline
@@ -604,9 +628,9 @@ void QDeclarativeAnchorsPrivate::updateHorizontalAnchors()
} else if (usedAnchors & QDeclarativeAnchors::HCenterAnchor) {
//Handle hCenter
if (hCenter.item == item->parentItem()) {
- setItemX(adjustedPosition(hCenter.item, hCenter.anchorLine) - itemPrivate->width()/2 + hCenterOffset);
+ setItemX(adjustedPosition(hCenter.item, hCenter.anchorLine) - hcenter(item) + hCenterOffset);
} else if (hCenter.item->parentItem() == item->parentItem()) {
- setItemX(position(hCenter.item, hCenter.anchorLine) - itemPrivate->width()/2 + hCenterOffset);
+ setItemX(position(hCenter.item, hCenter.anchorLine) - hcenter(item) + hCenterOffset);
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
index a05e426..d8527d3 100644
--- a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
@@ -63,22 +63,32 @@ QT_BEGIN_NAMESPACE
\inherits Image
\since 4.7
- This item provides for playing animations stored as images containing a series of frames,
- such as GIF files. The full list of supported formats can be determined with
- QMovie::supportedFormats().
+ The AnimatedImage element provides for playing animations stored as images containing a series of frames,
+ such as GIF files.
+
+ The full list of supported formats can be determined with QMovie::supportedFormats().
\table
\row
\o \image animatedimageitem.gif
\o
\qml
-Item {
- width: anim.width; height: anim.height+8
- AnimatedImage { id: anim; source: "pics/games-anim.gif" }
- Rectangle { color: "red"; width: 4; height: 8; y: anim.height
- x: (anim.width-width)*anim.currentFrame/(anim.frameCount-1)
+ import Qt 4.7
+
+ Rectangle {
+ width: animation.width; height: animation.height + 8
+
+ AnimatedImage { id: animation; source: "animation.gif" }
+
+ Rectangle {
+ property int frames: animation.frameCount
+
+ width: 4; height: 8
+ x: (animation.width - width) * animation.currentFrame / frames
+ y: animation.height
+ color: "red"
+ }
}
-}
\endqml
\endtable
*/
@@ -96,7 +106,7 @@ QDeclarativeAnimatedImage::~QDeclarativeAnimatedImage()
/*!
\qmlproperty bool AnimatedImage::paused
- This property holds whether the animated image is paused or not
+ This property holds whether the animated image is paused.
Defaults to false, and can be set to true when you want to pause.
*/
@@ -120,7 +130,7 @@ void QDeclarativeAnimatedImage::setPaused(bool pause)
}
/*!
\qmlproperty bool AnimatedImage::playing
- This property holds whether the animated image is playing or not
+ This property holds whether the animated image is playing.
Defaults to true, so as to start playing immediately.
*/
diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
index 1f1e453..cf458da 100644
--- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
@@ -138,7 +138,7 @@ QDeclarativeBorderImage::~QDeclarativeBorderImage()
BorderImage can handle any image format supported by Qt, loaded from any URL scheme supported by Qt.
- It can also handle .sci files, which are a Qml-specific format. A .sci file uses a simple text-based format that specifies
+ It can also handle .sci files, which are a QML-specific format. A .sci file uses a simple text-based format that specifies
the borders, the image file and the tile rules.
The following .sci file sets the borders to 10 on each side for the image \c picture.png:
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 10dc0f8..fdc1444 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -351,6 +351,8 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd()
Flickable places its children on a surface that can be dragged and flicked.
\code
+ import Qt 4.7
+
Flickable {
width: 200; height: 200
contentWidth: image.width; contentHeight: image.height
@@ -1039,11 +1041,11 @@ QDeclarativeListProperty<QGraphicsObject> QDeclarativeFlickable::flickableChildr
The \c boundsBehavior can be one of:
\list
- \o \e Flickable.StopAtBounds - the contents can not be dragged beyond the boundary
+ \o Flickable.StopAtBounds - the contents can not be dragged beyond the boundary
of the flickable, and flicks will not overshoot.
- \o \e Flickable.DragOverBounds - the contents can be dragged beyond the boundary
+ \o Flickable.DragOverBounds - the contents can be dragged beyond the boundary
of the Flickable, but flicks will not overshoot.
- \o \e Flickable.DragAndOvershootBounds (default) - the contents can be dragged
+ \o Flickable.DragAndOvershootBounds (default) - the contents can be dragged
beyond the boundary of the Flickable, and can overshoot the
boundary when flicked.
\endlist
diff --git a/src/declarative/graphicsitems/qdeclarativeflipable.cpp b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
index d926119..8c9d2dd 100644
--- a/src/declarative/graphicsitems/qdeclarativeflipable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
@@ -74,7 +74,7 @@ public:
\inherits Item
Flipable is an item that can be visibly "flipped" between its front and
- back sides. It is used together with Rotation and State/Transition to
+ back sides. It is used together with \l Rotation and \l {State}/\l {Transition} to
produce a flipping effect.
Here is a Flipable that flips whenever it is clicked:
@@ -83,10 +83,12 @@ public:
\image flipable.gif
- The Rotation element is used to specify the angle and axis of the flip,
- and the State defines the changes in angle which produce the flipping
- effect. Finally, the Transition creates the animation that changes the
+ The \l Rotation element is used to specify the angle and axis of the flip,
+ and the \l State defines the changes in angle which produce the flipping
+ effect. Finally, the \l Transition creates the animation that changes the
angle over one second.
+
+ \sa {declarative/ui-components/flipable}{Flipable example}
*/
/*!
diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp
index 906f1fc..3792595 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp
@@ -108,6 +108,7 @@ public:
, highlightComponent(0), highlight(0), trackedItem(0)
, moveReason(Other), buffer(0), highlightXAnimator(0), highlightYAnimator(0)
, highlightMoveDuration(150)
+ , footerComponent(0), footer(0), headerComponent(0), header(0)
, bufferMode(BufferBefore | BufferAfter), snapMode(QDeclarativeGridView::NoSnap)
, ownModel(false), wrap(false), autoHighlight(true)
, fixCurrentVisibility(false), lazyRelease(false), layoutScheduled(false)
@@ -128,6 +129,8 @@ public:
void createHighlight();
void updateHighlight();
void updateCurrent(int modelIndex);
+ void updateHeader();
+ void updateFooter();
void fixupPosition();
FxGridItem *visibleItem(int modelIndex) const {
@@ -230,6 +233,18 @@ public:
return visibleItems.count() ? visibleItems.first() : 0;
}
+ int lastVisibleIndex() const {
+ int lastIndex = -1;
+ for (int i = visibleItems.count()-1; i >= 0; --i) {
+ FxGridItem *gridItem = visibleItems.at(i);
+ if (gridItem->index != -1) {
+ lastIndex = gridItem->index;
+ break;
+ }
+ }
+ return lastIndex;
+ }
+
// Map a model index to visibleItems list index.
// These may differ if removed items are still present in the visible list,
// e.g. doing a removal animation
@@ -246,16 +261,37 @@ public:
return -1; // Not in visibleList
}
- qreal snapPosAt(qreal pos) {
+ qreal snapPosAt(qreal pos) const {
+ Q_Q(const QDeclarativeGridView);
qreal snapPos = 0;
if (!visibleItems.isEmpty()) {
pos += rowSize()/2;
snapPos = visibleItems.first()->rowPos() - visibleIndex / columns * rowSize();
snapPos = pos - fmodf(pos - snapPos, qreal(rowSize()));
+ qreal maxExtent = flow == QDeclarativeGridView::LeftToRight ? -q->maxYExtent() : -q->maxXExtent();
+ qreal minExtent = flow == QDeclarativeGridView::LeftToRight ? -q->minYExtent() : -q->minXExtent();
+ if (snapPos > maxExtent)
+ snapPos = maxExtent;
+ if (snapPos < minExtent)
+ snapPos = minExtent;
}
return snapPos;
}
+ FxGridItem *snapItemAt(qreal pos) {
+ for (int i = 0; i < visibleItems.count(); ++i) {
+ FxGridItem *item = visibleItems[i];
+ if (item->index == -1)
+ continue;
+ qreal itemTop = item->rowPos();
+ if (item->index == model->count()-1 || (itemTop+rowSize()/2 >= pos))
+ return item;
+ }
+ if (visibleItems.count() && visibleItems.first()->rowPos() <= pos)
+ return visibleItems.first();
+ return 0;
+ }
+
int snapIndex() {
int index = currentIndex;
for (int i = 0; i < visibleItems.count(); ++i) {
@@ -283,6 +319,9 @@ public:
scheduleLayout();
}
}
+ } else if ((header && header->item == item) || (footer && footer->item == item)) {
+ updateHeader();
+ updateFooter();
}
}
@@ -330,6 +369,10 @@ public:
QSmoothedAnimation *highlightXAnimator;
QSmoothedAnimation *highlightYAnimator;
int highlightMoveDuration;
+ QDeclarativeComponent *footerComponent;
+ FxGridItem *footer;
+ QDeclarativeComponent *headerComponent;
+ FxGridItem *header;
enum BufferMode { NoBuffer = 0x00, BufferBefore = 0x01, BufferAfter = 0x02 };
int bufferMode;
QDeclarativeGridView::SnapMode snapMode;
@@ -412,7 +455,6 @@ void QDeclarativeGridViewPrivate::refill(qreal from, qreal to, bool doBuffer)
Q_Q(QDeclarativeGridView);
if (!isValid() || !q->isComponentComplete())
return;
-
itemCount = model->count();
qreal bufferFrom = from - buffer;
qreal bufferTo = to + buffer;
@@ -522,6 +564,10 @@ void QDeclarativeGridViewPrivate::refill(qreal from, qreal to, bool doBuffer)
deferredRelease = true;
}
if (changed) {
+ if (header)
+ updateHeader();
+ if (footer)
+ updateFooter();
if (flow == QDeclarativeGridView::LeftToRight)
q->setContentHeight(endPosition() - startPosition());
else
@@ -557,7 +603,7 @@ void QDeclarativeGridViewPrivate::layout()
{
Q_Q(QDeclarativeGridView);
layoutScheduled = false;
- if (!isValid()) {
+ if (!isValid() && !visibleItems.count()) {
clear();
return;
}
@@ -579,6 +625,10 @@ void QDeclarativeGridViewPrivate::layout()
item->setPosition(colPos, rowPos);
}
}
+ if (header)
+ updateHeader();
+ if (footer)
+ updateFooter();
q->refill();
updateHighlight();
moveReason = Other;
@@ -742,6 +792,94 @@ void QDeclarativeGridViewPrivate::updateCurrent(int modelIndex)
releaseItem(oldCurrentItem);
}
+void QDeclarativeGridViewPrivate::updateFooter()
+{
+ Q_Q(QDeclarativeGridView);
+ if (!footer && footerComponent) {
+ QDeclarativeItem *item = 0;
+ QDeclarativeContext *context = new QDeclarativeContext(qmlContext(q));
+ QObject *nobj = footerComponent->create(context);
+ if (nobj) {
+ QDeclarative_setParent_noEvent(context, nobj);
+ item = qobject_cast<QDeclarativeItem *>(nobj);
+ if (!item)
+ delete nobj;
+ } else {
+ delete context;
+ }
+ if (item) {
+ QDeclarative_setParent_noEvent(item, q->viewport());
+ item->setParentItem(q->viewport());
+ item->setZValue(1);
+ QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
+ itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
+ footer = new FxGridItem(item, q);
+ }
+ }
+ if (footer) {
+ if (visibleItems.count()) {
+ qreal endPos = endPosition();
+ if (lastVisibleIndex() == model->count()-1) {
+ footer->setPosition(0, endPos);
+ } else {
+ qreal visiblePos = position() + q->height();
+ if (endPos <= visiblePos || footer->endRowPos() < endPos)
+ footer->setPosition(0, endPos);
+ }
+ } else {
+ qreal endPos = 0;
+ if (header) {
+ endPos += flow == QDeclarativeGridView::LeftToRight
+ ? header->item->height()
+ : header->item->width();
+ }
+ footer->setPosition(0, endPos);
+ }
+ }
+}
+
+void QDeclarativeGridViewPrivate::updateHeader()
+{
+ Q_Q(QDeclarativeGridView);
+ if (!header && headerComponent) {
+ QDeclarativeItem *item = 0;
+ QDeclarativeContext *context = new QDeclarativeContext(qmlContext(q));
+ QObject *nobj = headerComponent->create(context);
+ if (nobj) {
+ QDeclarative_setParent_noEvent(context, nobj);
+ item = qobject_cast<QDeclarativeItem *>(nobj);
+ if (!item)
+ delete nobj;
+ } else {
+ delete context;
+ }
+ if (item) {
+ QDeclarative_setParent_noEvent(item, q->viewport());
+ item->setParentItem(q->viewport());
+ item->setZValue(1);
+ QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
+ itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
+ header = new FxGridItem(item, q);
+ }
+ }
+ if (header) {
+ if (visibleItems.count()) {
+ qreal startPos = startPosition();
+ qreal headerSize = flow == QDeclarativeGridView::LeftToRight
+ ? header->item->height()
+ : header->item->width();
+ if (visibleIndex == 0) {
+ header->setPosition(0, startPos - headerSize);
+ } else {
+ if (position() <= startPos || header->rowPos() > startPos - headerSize)
+ header->setPosition(0, startPos - headerSize);
+ }
+ } else {
+ header->setPosition(0, 0);
+ }
+ }
+}
+
void QDeclarativeGridViewPrivate::fixupPosition()
{
moveReason = Other;
@@ -753,7 +891,6 @@ void QDeclarativeGridViewPrivate::fixupPosition()
void QDeclarativeGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent)
{
- Q_Q(QDeclarativeGridView);
if ((flow == QDeclarativeGridView::TopToBottom && &data == &vData)
|| (flow == QDeclarativeGridView::LeftToRight && &data == &hData))
return;
@@ -761,7 +898,41 @@ void QDeclarativeGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m
int oldDuration = fixupDuration;
fixupDuration = moveReason == Mouse ? fixupDuration : 0;
- if (haveHighlightRange && highlightRange == QDeclarativeGridView::StrictlyEnforceRange) {
+ if (snapMode != QDeclarativeGridView::NoSnap) {
+ FxGridItem *topItem = snapItemAt(position()+highlightRangeStart);
+ FxGridItem *bottomItem = snapItemAt(position()+highlightRangeEnd);
+ qreal pos;
+ if (topItem && bottomItem && haveHighlightRange && highlightRange == QDeclarativeGridView::StrictlyEnforceRange) {
+ qreal topPos = qMin(topItem->rowPos() - highlightRangeStart, -maxExtent);
+ qreal bottomPos = qMax(bottomItem->rowPos() - highlightRangeEnd, -minExtent);
+ pos = qAbs(data.move + topPos) < qAbs(data.move + bottomPos) ? topPos : bottomPos;
+ } else if (topItem) {
+ pos = qMax(qMin(topItem->rowPos() - highlightRangeStart, -maxExtent), -minExtent);
+ } else if (bottomItem) {
+ pos = qMax(qMin(bottomItem->rowPos() - highlightRangeStart, -maxExtent), -minExtent);
+ } else {
+ fixupDuration = oldDuration;
+ return;
+ }
+ if (currentItem && haveHighlightRange && highlightRange == QDeclarativeGridView::StrictlyEnforceRange) {
+ updateHighlight();
+ qreal currPos = currentItem->rowPos();
+ if (pos < currPos + rowSize() - highlightRangeEnd)
+ pos = currPos + rowSize() - highlightRangeEnd;
+ if (pos > currPos - highlightRangeStart)
+ pos = currPos - highlightRangeStart;
+ }
+
+ qreal dist = qAbs(data.move + pos);
+ if (dist > 0) {
+ timeline.reset(data.move);
+ if (fixupDuration)
+ timeline.move(data.move, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
+ else
+ timeline.set(data.move, -pos);
+ vTime = timeline.time();
+ }
+ } else if (haveHighlightRange && highlightRange == QDeclarativeGridView::StrictlyEnforceRange) {
if (currentItem) {
updateHighlight();
qreal pos = currentItem->rowPos();
@@ -773,26 +944,10 @@ void QDeclarativeGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m
timeline.reset(data.move);
if (viewPos != position()) {
- if (fixupDuration) {
+ if (fixupDuration)
timeline.move(data.move, -viewPos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
- } else {
- data.move.setValue(-viewPos);
- q->viewportMoved();
- }
- }
- vTime = timeline.time();
- }
- } else if (snapMode != QDeclarativeGridView::NoSnap) {
- qreal pos = -snapPosAt(-(data.move.value() - highlightRangeStart)) + highlightRangeStart;
- pos = qMin(qMax(pos, maxExtent), minExtent);
- qreal dist = qAbs(data.move.value() - pos);
- if (dist > 0) {
- timeline.reset(data.move);
- if (fixupDuration) {
- timeline.move(data.move, pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
- } else {
- data.move.setValue(pos);
- q->viewportMoved();
+ else
+ timeline.set(data.move, -viewPos);
}
vTime = timeline.time();
}
@@ -806,7 +961,6 @@ void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
QDeclarativeTimeLineCallback::Callback fixupCallback, qreal velocity)
{
Q_Q(QDeclarativeGridView);
-
moveReason = Mouse;
if ((!haveHighlightRange || highlightRange != QDeclarativeGridView::StrictlyEnforceRange)
&& snapMode == QDeclarativeGridView::NoSnap) {
@@ -851,9 +1005,10 @@ void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
qreal accel = deceleration;
qreal v2 = v * v;
qreal overshootDist = 0.0;
- if (maxDistance > 0.0 && v2 / (2.0f * maxDistance) < accel) {
+ if ((maxDistance > 0.0 && v2 / (2.0f * maxDistance) < accel) || snapMode == QDeclarativeGridView::SnapOneRow) {
// + rowSize()/4 to encourage moving at least one item in the flick direction
qreal dist = v2 / (accel * 2.0) + rowSize()/4;
+ dist = qMin(dist, maxDistance);
if (v > 0)
dist = -dist;
data.flickTarget = -snapPosAt(-(data.move.value() - highlightRangeStart) + dist) + highlightRangeStart;
@@ -904,28 +1059,43 @@ void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
\inherits Flickable
\brief The GridView item provides a grid view of items provided by a model.
- The model is typically provided by a QAbstractListModel "C++ model object",
- but can also be created directly in QML.
+ A GridView displays data from models created from built-in QML elements like ListModel
+ and XmlListModel, or custom model classes defined in C++ that inherit from
+ QAbstractListModel.
+
+ A GridView has a \l model, which defines the data to be displayed, and
+ a \l delegate, which defines how the data should be displayed. Items in a
+ GridView are laid out horizontally or vertically. Grid views are inherently flickable
+ as GridView inherits from \l Flickable.
- The items are laid out top to bottom (vertically) or left to right (horizontally)
- and may be flicked to scroll.
+ For example, if there is a simple list model defined in a file \c ContactModel.qml like this:
- The below example creates a very simple grid, using a QML model.
+ \snippet doc/src/snippets/declarative/gridview/ContactModel.qml 0
- \image gridview.png
+ Another component can display this model data in a GridView, like this:
- \snippet doc/src/snippets/declarative/gridview/gridview.qml 3
+ \snippet doc/src/snippets/declarative/gridview/gridview.qml import
+ \codeline
+ \snippet doc/src/snippets/declarative/gridview/gridview.qml classdocs simple
+ \image gridview-simple.png
- The model is defined as a ListModel using QML:
- \quotefile doc/src/snippets/declarative/gridview/dummydata/ContactModel.qml
+ Here, the GridView creates a \c ContactModel component for its model, and a \l Column element
+ (containing \l Image and \ Text elements) for its delegate. The view will create a new delegate
+ for each item in the model. Notice the delegate is able to access the model's \c name and
+ \c portrait data directly.
- In this case ListModel is a handy way for us to test our UI. In practice
- the model would be implemented in C++, or perhaps via a SQL data source.
+ An improved grid view is shown below. The delegate is visually improved and is moved
+ into a separate \c contactDelegate component. Also, the currently selected item is highlighted
+ with a blue \l Rectangle using the \l highlight property, and \c focus is set to \c true
+ to enable keyboard navigation for the grid view.
+
+ \snippet doc/src/snippets/declarative/gridview/gridview.qml classdocs advanced
+ \image gridview-highlight.png
Delegates are instantiated as needed and may be destroyed at any time.
State should \e never be stored in a delegate.
- \bold Note that views do not enable \e clip automatically. If the view
+ \note Views do not enable \e clip automatically. If the view
is not clipped by another item or the screen, it will be necessary
to set \e {clip: true} in order to have the out of view items clipped
nicely.
@@ -943,11 +1113,13 @@ QDeclarativeGridView::~QDeclarativeGridView()
d->clear();
if (d->ownModel)
delete d->model;
+ delete d->header;
+ delete d->footer;
}
/*!
\qmlattachedproperty bool GridView::isCurrentItem
- This attched property is true if this delegate is the current item; otherwise false.
+ This attached property is true if this delegate is the current item; otherwise false.
It is attached to each instance of the delegate.
*/
@@ -971,19 +1143,7 @@ QDeclarativeGridView::~QDeclarativeGridView()
The example below ensures that the animation completes before
the item is removed from the grid.
- \code
- Component {
- id: myDelegate
- Item {
- id: wrapper
- GridView.onRemove: SequentialAnimation {
- PropertyAction { target: wrapper; property: "GridView.delayRemove"; value: true }
- NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing.type: Easing.InOutQuad }
- PropertyAction { target: wrapper; property: "GridView.delayRemove"; value: false }
- }
- }
- }
- \endcode
+ \snippet doc/src/snippets/declarative/gridview/gridview.qml delayRemove
*/
/*!
@@ -1001,10 +1161,10 @@ QDeclarativeGridView::~QDeclarativeGridView()
\qmlproperty model GridView::model
This property holds the model providing data for the grid.
- The model provides a set of data that is used to create the items
- for the view. For large or dynamic datasets the model is usually
- provided by a C++ model object. The C++ model object must be a \l
- {QAbstractItemModel} subclass, a VisualModel, or a simple list.
+ The model provides the set of data that is used to create the items
+ in the view. Models can be created directly in QML using \l ListModel, \l XmlListModel
+ or \l VisualItemModel, or provided by C++ model classes. If a C++ model class is
+ used, it must be a subclass of \l QAbstractItemModel or a simple list.
\sa {qmlmodels}{Data Models}
*/
@@ -1079,11 +1239,11 @@ void QDeclarativeGridView::setModel(const QVariant &model)
that is not needed for the normal display of the delegate in a \l Loader which
can load additional elements when needed.
- Note that the GridView will layout the items based on the size of the root item
+ The GridView will layout the items based on the size of the root item
in the delegate.
- Here is an example delegate:
- \snippet doc/src/snippets/declarative/gridview/gridview.qml 0
+ \note Delegates are instantiated as needed and may be destroyed at any time.
+ State should \e never be stored in a delegate.
*/
QDeclarativeComponent *QDeclarativeGridView::delegate() const
{
@@ -1157,8 +1317,7 @@ QDeclarativeItem *QDeclarativeGridView::currentItem()
/*!
\qmlproperty Item GridView::highlightItem
- \c highlightItem holds the highlight item, which was created
- from the \l highlight component.
+ This holds the highlight item created from the \l highlight component.
The highlightItem is managed by the view unless
\l highlightFollowsCurrentItem is set to false.
@@ -1189,13 +1348,10 @@ int QDeclarativeGridView::count() const
\qmlproperty Component GridView::highlight
This property holds the component to use as the highlight.
- An instance of the highlight component will be created for each view.
- The geometry of the resultant component instance will be managed by the view
+ An instance of the highlight component is created for each view.
+ The geometry of the resulting component instance will be managed by the view
so as to stay with the current item, unless the highlightFollowsCurrentItem property is false.
- The below example demonstrates how to make a simple highlight:
- \snippet doc/src/snippets/declarative/gridview/gridview.qml 1
-
\sa highlightItem, highlightFollowsCurrentItem
*/
QDeclarativeComponent *QDeclarativeGridView::highlight() const
@@ -1218,21 +1374,14 @@ void QDeclarativeGridView::setHighlight(QDeclarativeComponent *highlight)
\qmlproperty bool GridView::highlightFollowsCurrentItem
This property sets whether the highlight is managed by the view.
- If highlightFollowsCurrentItem is true, the highlight will be moved smoothly
- to follow the current item. If highlightFollowsCurrentItem is false, the
- highlight will not be moved by the view, and must be implemented
- by the highlight component, for example:
-
- \code
- Component {
- id: myHighlight
- Rectangle {
- id: wrapper; color: "lightsteelblue"; radius: 4; width: 320; height: 60
- SpringFollow on y { source: wrapper.GridView.view.currentItem.y; spring: 3; damping: 0.2 }
- SpringFollow on x { source: wrapper.GridView.view.currentItem.x; spring: 3; damping: 0.2 }
- }
- }
- \endcode
+ If this property is true, the highlight is moved smoothly
+ to follow the current item. Otherwise, the
+ highlight is not moved by the view, and any movement must be implemented
+ by the highlight.
+
+ Here is a highlight with its motion defined by a \l {SpringFollow} item:
+
+ \snippet doc/src/snippets/declarative/gridview/gridview.qml highlightFollowsCurrentItem
*/
bool QDeclarativeGridView::highlightFollowsCurrentItem() const
{
@@ -1290,32 +1439,30 @@ void QDeclarativeGridView::setHighlightMoveDuration(int duration)
\qmlproperty real GridView::preferredHighlightEnd
\qmlproperty enumeration GridView::highlightRangeMode
- These properties set the preferred range of the highlight (current item)
- within the view.
-
- Note that this is the correct way to influence where the
- current item ends up when the view scrolls. For example, if you want the
- currently selected item to be in the middle of the list, then set the
- highlight range to be where the middle item would go. Then, when the view scrolls,
- the currently selected item will be the item at that spot. This also applies to
- when the currently selected item changes - it will scroll to within the preferred
- highlight range. Furthermore, the behaviour of the current item index will occur
- whether or not a highlight exists.
-
- If highlightRangeMode is set to \e GridView.ApplyRange the view will
- attempt to maintain the highlight within the range, however
- the highlight can move outside of the range at the ends of the list
- or due to a mouse interaction.
+ These properties define the preferred range of the highlight (for the current item)
+ within the view. The \c preferredHighlightBegin value must be less than the
+ \c preferredHighlightEnd value.
- If highlightRangeMode is set to \e GridView.StrictlyEnforceRange the highlight will never
- move outside of the range. This means that the current item will change
- if a keyboard or mouse action would cause the highlight to move
- outside of the range.
+ These properties affect the position of the current item when the view is scrolled.
+ For example, if the currently selected item should stay in the middle of the
+ view when it is scrolled, set the \c preferredHighlightBegin and
+ \c preferredHighlightEnd values to the top and bottom coordinates of where the middle
+ item would be. If the \c currentItem is changed programmatically, the view will
+ automatically scroll so that the current item is in the middle of the view.
+ Furthermore, the behavior of the current item index will occur whether or not a
+ highlight exists.
- The default value is \e GridView.NoHighlightRange.
+ Valid values for \c highlightRangeMode are:
- Note that a valid range requires preferredHighlightEnd to be greater
- than or equal to preferredHighlightBegin.
+ \list
+ \o GridView.ApplyRange - the view attempts to maintain the highlight within the range.
+ However, the highlight can move outside of the range at the ends of the view or due
+ to mouse interaction.
+ \o GridView.StrictlyEnforceRange - the highlight never moves outside of the range.
+ The current item changes if a keyboard or mouse action would cause the highlight to move
+ outside of the range.
+ \o GridView.NoHighlightRange - this is the default value.
+ \endlist
*/
qreal QDeclarativeGridView::preferredHighlightBegin() const
{
@@ -1370,10 +1517,12 @@ void QDeclarativeGridView::setHighlightRangeMode(HighlightRangeMode mode)
\qmlproperty enumeration GridView::flow
This property holds the flow of the grid.
- Possible values are \c GridView.LeftToRight (default) and \c GridView.TopToBottom.
+ Possible values:
- If \a flow is \c GridView.LeftToRight, the view will scroll vertically.
- If \a flow is \c GridView.TopToBottom, the view will scroll horizontally.
+ \list
+ \o GridView.LeftToRight (default) - Items are laid out from left to right, and the view scrolls vertically
+ \o GridView.TopToBottom - Items are laid out from top to bottom, and the view scrolls horizontally
+ \endlist
*/
QDeclarativeGridView::Flow QDeclarativeGridView::flow() const
{
@@ -1405,8 +1554,9 @@ void QDeclarativeGridView::setFlow(Flow flow)
\qmlproperty bool GridView::keyNavigationWraps
This property holds whether the grid wraps key navigation
- If this property is true then key presses to move off of one end of the grid will cause the
- selection to jump to the other side.
+ If this is true, key navigation that would move the current item selection
+ past one end of the view instead wraps around and moves the selection to
+ the other end of the view.
*/
bool QDeclarativeGridView::isWrapEnabled() const
{
@@ -1463,7 +1613,7 @@ void QDeclarativeGridView::setCacheBuffer(int buffer)
\qmlproperty int GridView::cellWidth
\qmlproperty int GridView::cellHeight
- These properties holds the width and height of each cell in the grid
+ These properties holds the width and height of each cell in the grid.
The default cell size is 100x100.
*/
@@ -1503,14 +1653,14 @@ void QDeclarativeGridView::setCellHeight(int cellHeight)
/*!
\qmlproperty enumeration GridView::snapMode
- This property determines where the view will settle following a drag or flick.
- The allowed values are:
+ This property determines how the view scrolling will settle following a drag or flick.
+ The possible values are:
\list
- \o GridView.NoSnap (default) - the view will stop anywhere within the visible area.
- \o GridView.SnapToRow - the view will settle with a row (or column for TopToBottom flow)
+ \o GridView.NoSnap (default) - the view stops anywhere within the visible area.
+ \o GridView.SnapToRow - the view settles with a row (or column for \c GridView.TopToBottom flow)
aligned with the start of the view.
- \o GridView.SnapOneRow - the view will settle no more than one row (or column for TopToBottom flow)
+ \o GridView.SnapOneRow - the view will settle no more than one row (or column for \c GridView.TopToBottom flow)
away from the first visible row at the time the mouse button is released.
This mode is particularly useful for moving one page at a time.
\endlist
@@ -1531,6 +1681,67 @@ void QDeclarativeGridView::setSnapMode(SnapMode mode)
}
}
+/*!
+ \qmlproperty Component GridView::footer
+ This property holds the component to use as the footer.
+
+ An instance of the footer component is created for each view. The
+ footer is positioned at the end of the view, after any items.
+
+ \sa header
+*/
+QDeclarativeComponent *QDeclarativeGridView::footer() const
+{
+ Q_D(const QDeclarativeGridView);
+ return d->footerComponent;
+}
+
+void QDeclarativeGridView::setFooter(QDeclarativeComponent *footer)
+{
+ Q_D(QDeclarativeGridView);
+ if (d->footerComponent != footer) {
+ if (d->footer) {
+ delete d->footer;
+ d->footer = 0;
+ }
+ d->footerComponent = footer;
+ d->updateFooter();
+ d->updateGrid();
+ emit footerChanged();
+ }
+}
+
+/*!
+ \qmlproperty Component GridView::header
+ This property holds the component to use as the header.
+
+ An instance of the header component is created for each view. The
+ header is positioned at the beginning of the view, before any items.
+
+ \sa footer
+*/
+QDeclarativeComponent *QDeclarativeGridView::header() const
+{
+ Q_D(const QDeclarativeGridView);
+ return d->headerComponent;
+}
+
+void QDeclarativeGridView::setHeader(QDeclarativeComponent *header)
+{
+ Q_D(QDeclarativeGridView);
+ if (d->headerComponent != header) {
+ if (d->header) {
+ delete d->header;
+ d->header = 0;
+ }
+ d->headerComponent = header;
+ d->updateHeader();
+ d->updateFooter();
+ d->updateGrid();
+ emit headerChanged();
+ }
+}
+
bool QDeclarativeGridView::event(QEvent *event)
{
Q_D(QDeclarativeGridView);
@@ -1597,6 +1808,8 @@ qreal QDeclarativeGridView::minYExtent() const
if (d->flow == QDeclarativeGridView::TopToBottom)
return QDeclarativeFlickable::minYExtent();
qreal extent = -d->startPosition();
+ if (d->header && d->visibleItems.count())
+ extent += d->header->item->height();
if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
extent += d->highlightRangeStart;
extent = qMax(extent, -(d->rowPosAt(0) + d->rowSize() - d->highlightRangeEnd));
@@ -1610,13 +1823,17 @@ qreal QDeclarativeGridView::maxYExtent() const
if (d->flow == QDeclarativeGridView::TopToBottom)
return QDeclarativeFlickable::maxYExtent();
qreal extent;
- if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
+ if (!d->model || !d->model->count()) {
+ extent = 0;
+ } else if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
extent = -(d->rowPosAt(d->model->count()-1) - d->highlightRangeStart);
if (d->highlightRangeEnd != d->highlightRangeStart)
extent = qMin(extent, -(d->endPosition() - d->highlightRangeEnd + 1));
} else {
extent = -(d->endPosition() - height());
}
+ if (d->footer)
+ extent -= d->footer->item->height();
const qreal minY = minYExtent();
if (extent > minY)
extent = minY;
@@ -1629,6 +1846,8 @@ qreal QDeclarativeGridView::minXExtent() const
if (d->flow == QDeclarativeGridView::LeftToRight)
return QDeclarativeFlickable::minXExtent();
qreal extent = -d->startPosition();
+ if (d->header && d->visibleItems.count())
+ extent += d->header->item->width();
if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
extent += d->highlightRangeStart;
extent = qMax(extent, -(d->rowPosAt(0) + d->rowSize() - d->highlightRangeEnd));
@@ -1642,13 +1861,17 @@ qreal QDeclarativeGridView::maxXExtent() const
if (d->flow == QDeclarativeGridView::LeftToRight)
return QDeclarativeFlickable::maxXExtent();
qreal extent;
- if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
+ if (!d->model || !d->model->count()) {
+ extent = 0;
+ } if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
extent = -(d->rowPosAt(d->model->count()-1) - d->highlightRangeStart);
if (d->highlightRangeEnd != d->highlightRangeStart)
extent = qMin(extent, -(d->endPosition() - d->highlightRangeEnd + 1));
} else {
- extent = -(d->endPosition() - height());
+ extent = -(d->endPosition() - width());
}
+ if (d->footer)
+ extent -= d->footer->item->width();
const qreal minX = minXExtent();
if (extent > minX)
extent = minX;
@@ -1789,22 +2012,22 @@ void QDeclarativeGridView::moveCurrentIndexRight()
\a mode:
\list
- \o Beginning - position item at the top (or left for TopToBottom flow) of the view.
- \o Center- position item in the center of the view.
- \o End - position item at bottom (or right for horizontal orientation) of the view.
- \o Visible - if any part of the item is visible then take no action, otherwise
+ \o GridView.Beginning - position item at the top (or left for \c GridView.TopToBottom flow) of the view.
+ \o GridView.Center - position item in the center of the view.
+ \o GridView.End - position item at bottom (or right for horizontal orientation) of the view.
+ \o GridView.Visible - if any part of the item is visible then take no action, otherwise
bring the item into view.
- \o Contain - ensure the entire item is visible. If the item is larger than
- the view the item is positioned at the top (or left for TopToBottom flow) of the view.
+ \o GridView.Contain - ensure the entire item is visible. If the item is larger than
+ the view the item is positioned at the top (or left for \c GridView.TopToBottom flow) of the view.
\endlist
If positioning the view at the index would cause empty space to be displayed at
the beginning or end of the view, the view will be positioned at the boundary.
- It is not recommended to use contentX or contentY to position the view
+ It is not recommended to use \l {Flickable::}{contentX} or \l {Flickable::}{contentY} to position the view
at a particular index. This is unreliable since removing items from the start
of the view does not cause all other items to be repositioned.
- The correct way to bring an item into view is with positionViewAtIndex.
+ The correct way to bring an item into view is with \c positionViewAtIndex.
*/
void QDeclarativeGridView::positionViewAtIndex(int index, int mode)
{
diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h
index 2bf154c..021aad9 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h
@@ -80,6 +80,9 @@ class Q_DECLARATIVE_EXPORT QDeclarativeGridView : public QDeclarativeFlickable
Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged)
+ Q_PROPERTY(QDeclarativeComponent *header READ header WRITE setHeader NOTIFY headerChanged)
+ Q_PROPERTY(QDeclarativeComponent *footer READ footer WRITE setFooter NOTIFY footerChanged)
+
Q_ENUMS(HighlightRangeMode)
Q_ENUMS(SnapMode)
Q_ENUMS(Flow)
@@ -142,6 +145,12 @@ public:
SnapMode snapMode() const;
void setSnapMode(SnapMode mode);
+ QDeclarativeComponent *footer() const;
+ void setFooter(QDeclarativeComponent *);
+
+ QDeclarativeComponent *header() const;
+ void setHeader(QDeclarativeComponent *);
+
enum PositionMode { Beginning, Center, End, Visible, Contain };
Q_INVOKABLE void positionViewAtIndex(int index, int mode);
@@ -172,6 +181,8 @@ Q_SIGNALS:
void keyNavigationWrapsChanged();
void cacheBufferChanged();
void snapModeChanged();
+ void headerChanged();
+ void footerChanged();
protected:
virtual bool event(QEvent *event);
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 4593cf8..ec08517 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp
@@ -83,6 +83,8 @@ QT_BEGIN_NAMESPACE
that images which do not form part of the user interface have their
size bounded via the \l sourceSize property. This is especially important for content
that is loaded from external sources or provided by the user.
+
+ \sa {declarative/imageelements/image}{Image example}
*/
/*!
@@ -95,7 +97,7 @@ QT_BEGIN_NAMESPACE
Image { source: "pics/star.png" }
\endqml
- A QDeclarativeImage object can be instantiated in Qml using the tag \l Image.
+ A QDeclarativeImage object can be instantiated in QML using the tag \l Image.
*/
QDeclarativeImage::QDeclarativeImage(QDeclarativeItem *parent)
@@ -275,11 +277,6 @@ qreal QDeclarativeImage::paintedHeight() const
\o Image.Error - an error occurred while loading the image
\endlist
- Note that a change in the status property does not cause anything to happen
- (although it reflects what has happened with the image internally). If you wish
- to react to the change in status you need to do it yourself, for example in one
- of the following ways:
-
Use this status to provide an update or respond to the status change in some way.
For example, you could:
diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h
index 5ea700d..fa5b2a9 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h
@@ -87,8 +87,6 @@ protected:
QDeclarativeImage(QDeclarativeImagePrivate &dd, QDeclarativeItem *parent);
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
void pixmapChange();
-
-protected Q_SLOTS:
void updatePaintedGeometry();
private:
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index 134bd6d..42b370b 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -86,8 +86,8 @@ QT_BEGIN_NAMESPACE
The Transform elements let you create and control advanced transformations that can be configured
independently using specialized properties.
- You can assign any number of Transform elements to an Item. Each Transform is applied in order,
- one at a time, to the Item it's assigned to.
+ You can assign any number of Transform elements to an \l Item. Each Transform is applied in order,
+ one at a time.
*/
/*!
@@ -97,9 +97,11 @@ QT_BEGIN_NAMESPACE
The Translate object provides independent control over position in addition to the Item's x and y properties.
- The following example moves the Y axis of the Rectangles while still allowing the Row element
+ The following example moves the Y axis of the \l Rectangle elements while still allowing the \l Row element
to lay the items out as if they had not been transformed:
\qml
+ import Qt 4.7
+
Row {
Rectangle {
width: 100; height: 100
@@ -113,6 +115,8 @@ QT_BEGIN_NAMESPACE
}
}
\endqml
+
+ \image translate.png
*/
/*!
@@ -130,9 +134,9 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass Scale QGraphicsScale
\since 4.7
- \brief The Scale object provides a way to scale an Item.
+ \brief The Scale element provides a way to scale an Item.
- The Scale object gives more control over scaling than using Item's scale property. Specifically,
+ The Scale element gives more control over scaling than using \l Item's \l{Item::scale}{scale} property. Specifically,
it allows a different scale for the x and y axes, and allows the scale to be relative to an
arbitrary point.
@@ -144,6 +148,8 @@ QT_BEGIN_NAMESPACE
transform: Scale { origin.x: 25; origin.y: 25; xScale: 3}
}
\endqml
+
+ \sa Rotate, Translate
*/
/*!
@@ -171,7 +177,7 @@ QT_BEGIN_NAMESPACE
\since 4.7
\brief The Rotation object provides a way to rotate an Item.
- The Rotation object gives more control over rotation than using Item's rotation property.
+ The Rotation object gives more control over rotation than using \l Item's \l{Item::rotation}{rotation} property.
Specifically, it allows (z axis) rotation to be relative to an arbitrary point.
The following example rotates a Rectangle around its interior point 25, 25:
@@ -225,9 +231,10 @@ QT_BEGIN_NAMESPACE
\brief The QDeclarativeContents class gives access to the height and width of an item's contents.
*/
-
-QDeclarativeContents::QDeclarativeContents() : m_x(0), m_y(0), m_width(0), m_height(0)
+QDeclarativeContents::QDeclarativeContents(QDeclarativeItem *item) : m_item(item), m_x(0), m_y(0), m_width(0), m_height(0)
{
+ //### optimize
+ connect(this, SIGNAL(rectChanged(QRectF)), m_item, SIGNAL(childrenRectChanged(QRectF)));
}
QDeclarativeContents::~QDeclarativeContents()
@@ -322,12 +329,8 @@ void QDeclarativeContents::calcWidth(QDeclarativeItem *changed)
emit rectChanged(rectF());
}
-void QDeclarativeContents::setItem(QDeclarativeItem *item)
+void QDeclarativeContents::complete()
{
- m_item = item;
- //### optimize
- connect(this, SIGNAL(rectChanged(QRectF)), m_item, SIGNAL(childrenRectChanged(QRectF)));
-
QList<QGraphicsItem *> children = m_item->childItems();
for (int i = 0; i < children.count(); ++i) {
QDeclarativeItem *child = qobject_cast<QDeclarativeItem *>(children.at(i));
@@ -337,9 +340,7 @@ void QDeclarativeContents::setItem(QDeclarativeItem *item)
//###what about changes to visibility?
}
- //### defer until componentComplete
- calcHeight();
- calcWidth();
+ calcGeometry();
}
void QDeclarativeContents::itemGeometryChanged(QDeclarativeItem *changed, const QRectF &newGeometry, const QRectF &oldGeometry)
@@ -354,16 +355,14 @@ void QDeclarativeContents::itemDestroyed(QDeclarativeItem *item)
{
if (item)
QDeclarativeItemPrivate::get(item)->removeItemChangeListener(this, QDeclarativeItemPrivate::Geometry | QDeclarativeItemPrivate::Destroyed);
- calcWidth();
- calcHeight();
+ calcGeometry();
}
void QDeclarativeContents::childRemoved(QDeclarativeItem *item)
{
if (item)
QDeclarativeItemPrivate::get(item)->removeItemChangeListener(this, QDeclarativeItemPrivate::Geometry | QDeclarativeItemPrivate::Destroyed);
- calcWidth();
- calcHeight();
+ calcGeometry();
}
void QDeclarativeContents::childAdded(QDeclarativeItem *item)
@@ -722,7 +721,7 @@ void QDeclarativeKeyNavigationAttached::keyReleased(QKeyEvent *event, bool post)
The signal properties have a \l KeyEvent parameter, named
\e event which contains details of the event. If a key is
handled \e event.accepted should be set to true to prevent the
- event from propagating up the item heirarchy.
+ event from propagating up the item hierarchy.
\code
Item {
@@ -1629,7 +1628,7 @@ void QDeclarativeItemPrivate::data_append(QDeclarativeListProperty<QObject> *pro
QObject *QDeclarativeItemPrivate::resources_at(QDeclarativeListProperty<QObject> *prop, int index)
{
- QObjectList children = prop->object->children();
+ const QObjectList children = prop->object->children();
if (index < children.count())
return children.at(index);
else
@@ -1746,8 +1745,9 @@ QRectF QDeclarativeItem::childrenRect()
{
Q_D(QDeclarativeItem);
if (!d->_contents) {
- d->_contents = new QDeclarativeContents;
- d->_contents->setItem(this);
+ d->_contents = new QDeclarativeContents(this);
+ if (d->_componentComplete)
+ d->_contents->complete();
}
return d->_contents->rectF();
}
@@ -2387,6 +2387,28 @@ void QDeclarativeItem::forceFocus()
}
}
+
+/*!
+ \qmlmethod Item::childAt(real x, real y)
+
+ Returns the visible child item at point (\a x, \a y), which is in this
+ item's coordinate system, or \c null if there is no such item.
+ */
+QDeclarativeItem *QDeclarativeItem::childAt(qreal x, qreal y) const
+{
+ const QList<QGraphicsItem *> children = childItems();
+ for (int i = children.count()-1; i >= 0; --i) {
+ if (QDeclarativeItem *child = qobject_cast<QDeclarativeItem *>(children.at(i))) {
+ if (child->isVisible() && child->x() <= x
+ && child->x() + child->width() >= x
+ && child->y() <= y
+ && child->y() + child->height() >= y)
+ return child;
+ }
+ }
+ return 0;
+}
+
void QDeclarativeItemPrivate::focusChanged(bool flag)
{
Q_Q(QDeclarativeItem);
@@ -2591,6 +2613,8 @@ void QDeclarativeItem::componentComplete()
}
if (d->keyHandler)
d->keyHandler->componentComplete();
+ if (d->_contents)
+ d->_contents->complete();
}
QDeclarativeStateGroup *QDeclarativeItemPrivate::_states()
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h
index 77e316b..4f420f8 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem.h
@@ -148,6 +148,7 @@ public:
Q_INVOKABLE QScriptValue mapFromItem(const QScriptValue &item, qreal x, qreal y) const;
Q_INVOKABLE QScriptValue mapToItem(const QScriptValue &item, qreal x, qreal y) const;
Q_INVOKABLE void forceFocus();
+ Q_INVOKABLE QDeclarativeItem *childAt(qreal x, qreal y) const;
Q_SIGNALS:
void childrenChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h
index 184d6f1..fb416c2 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h
@@ -83,16 +83,17 @@ class QDeclarativeContents : public QObject, public QDeclarativeItemChangeListen
{
Q_OBJECT
public:
- QDeclarativeContents();
+ QDeclarativeContents(QDeclarativeItem *item);
~QDeclarativeContents();
QRectF rectF() const;
- void setItem(QDeclarativeItem *item);
-
void childRemoved(QDeclarativeItem *item);
void childAdded(QDeclarativeItem *item);
+ void calcGeometry() { calcWidth(); calcHeight(); }
+ void complete();
+
Q_SIGNALS:
void rectChanged(QRectF);
diff --git a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
index 4add66d..38d5f59 100644
--- a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
@@ -58,7 +58,10 @@ QT_BEGIN_NAMESPACE
taking its size hints into account, and you can propagate this to the other elements in your UI via anchors and bindings.
This is a QGraphicsLayoutItem subclass, and its properties merely expose the QGraphicsLayoutItem functionality to QML.
- See the QGraphicsLayoutItem documentation for further details.
+
+ The \l{declarative/cppextensions/qgraphicslayouts/layoutitem}{LayoutItem example}
+ demonstrates how a LayoutItem can be used within a \l{Graphics View Framework}{Graphics View}
+ scene.
*/
/*!
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index 01928a1..dcf18af 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -427,6 +427,12 @@ public:
scheduleLayout();
}
}
+ if ((header && header->item == item) || (footer && footer->item == item)) {
+ updateHeader();
+ updateFooter();
+ }
+ if (currentItem && currentItem->item == item)
+ updateHighlight();
if (trackedItem && trackedItem->item == item)
q->trackedPositionChanged();
}
@@ -731,7 +737,7 @@ void QDeclarativeListViewPrivate::layout()
{
Q_Q(QDeclarativeListView);
layoutScheduled = false;
- if (!isValid()) {
+ if (!isValid() && !visibleItems.count()) {
clear();
setPosition(0);
return;
@@ -1043,6 +1049,8 @@ void QDeclarativeListViewPrivate::updateFooter()
QDeclarative_setParent_noEvent(item, q->viewport());
item->setParentItem(q->viewport());
item->setZValue(1);
+ QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
+ itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
footer = new FxListItem(item, q);
}
}
@@ -1081,6 +1089,8 @@ void QDeclarativeListViewPrivate::updateHeader()
QDeclarative_setParent_noEvent(item, q->viewport());
item->setParentItem(q->viewport());
item->setZValue(1);
+ QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
+ itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
header = new FxListItem(item, q);
if (visibleItems.isEmpty())
visiblePos = header->size();
@@ -1103,7 +1113,9 @@ void QDeclarativeListViewPrivate::updateHeader()
void QDeclarativeListViewPrivate::fixupPosition()
{
- moveReason = Other;
+ if ((haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange)
+ || snapMode != QDeclarativeListView::NoSnap)
+ moveReason = Other;
if (orient == QDeclarativeListView::Vertical)
fixupY();
else
@@ -1112,7 +1124,6 @@ void QDeclarativeListViewPrivate::fixupPosition()
void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent)
{
- Q_Q(QDeclarativeListView);
if ((orient == QDeclarativeListView::Horizontal && &data == &vData)
|| (orient == QDeclarativeListView::Vertical && &data == &hData))
return;
@@ -1120,7 +1131,41 @@ void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m
int oldDuration = fixupDuration;
fixupDuration = moveReason == Mouse ? fixupDuration : 0;
- if (haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
+ if (snapMode != QDeclarativeListView::NoSnap) {
+ FxListItem *topItem = snapItemAt(position()+highlightRangeStart);
+ FxListItem *bottomItem = snapItemAt(position()+highlightRangeEnd);
+ qreal pos;
+ if (topItem && bottomItem && haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
+ qreal topPos = qMin(topItem->position() - highlightRangeStart, -maxExtent);
+ qreal bottomPos = qMax(bottomItem->position() - highlightRangeEnd, -minExtent);
+ pos = qAbs(data.move + topPos) < qAbs(data.move + bottomPos) ? topPos : bottomPos;
+ } else if (topItem) {
+ pos = qMax(qMin(topItem->position() - highlightRangeStart, -maxExtent), -minExtent);
+ } else if (bottomItem) {
+ pos = qMax(qMin(bottomItem->position() - highlightRangeStart, -maxExtent), -minExtent);
+ } else {
+ fixupDuration = oldDuration;
+ return;
+ }
+ if (currentItem && haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
+ updateHighlight();
+ qreal currPos = currentItem->position();
+ if (pos < currPos + currentItem->size() - highlightRangeEnd)
+ pos = currPos + currentItem->size() - highlightRangeEnd;
+ if (pos > currPos - highlightRangeStart)
+ pos = currPos - highlightRangeStart;
+ }
+
+ qreal dist = qAbs(data.move + pos);
+ if (dist > 0) {
+ timeline.reset(data.move);
+ if (fixupDuration)
+ timeline.move(data.move, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
+ else
+ timeline.set(data.move, -pos);
+ vTime = timeline.time();
+ }
+ } else if (haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
if (currentItem) {
updateHighlight();
qreal pos = currentItem->position();
@@ -1132,30 +1177,13 @@ void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m
timeline.reset(data.move);
if (viewPos != position()) {
- if (fixupDuration) {
+ if (fixupDuration)
timeline.move(data.move, -viewPos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
- } else {
- data.move.setValue(-viewPos);
- q->viewportMoved();
- }
+ else
+ timeline.set(data.move, -viewPos);
}
vTime = timeline.time();
}
- } else if (snapMode != QDeclarativeListView::NoSnap) {
- if (FxListItem *item = snapItemAt(position())) {
- qreal pos = qMin(item->position() - highlightRangeStart, -maxExtent);
- qreal dist = qAbs(data.move + pos);
- if (dist > 0) {
- timeline.reset(data.move);
- if (fixupDuration) {
- timeline.move(data.move, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
- } else {
- data.move.setValue(-pos);
- q->viewportMoved();
- }
- vTime = timeline.time();
- }
- }
} else {
QDeclarativeFlickablePrivate::fixup(data, minExtent, maxExtent);
}
@@ -1325,13 +1353,11 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
Another component can display this model data in a ListView, like this:
- \table
- \row
- \o \snippet doc/src/snippets/declarative/listview/listview.qml import
+ \snippet doc/src/snippets/declarative/listview/listview.qml import
\codeline
\snippet doc/src/snippets/declarative/listview/listview.qml classdocs simple
- \o \image listview-simple.png
- \endtable
+
+ \image listview-simple.png
Here, the ListView creates a \c ContactModel component for its model, and a \l Text element
for its delegate. The view will create a new \l Text component for each item in the model. Notice
@@ -1342,19 +1368,18 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
with a blue \l Rectangle using the \l highlight property, and \c focus is set to \c true
to enable keyboard navigation for the list view.
- \table
- \row
- \o \snippet doc/src/snippets/declarative/listview/listview.qml classdocs advanced
- \o \image listview-highlight.png
- \endtable
+ \snippet doc/src/snippets/declarative/listview/listview.qml classdocs advanced
+ \image listview-highlight.png
- In a ListView, delegates are instantiated as needed and may be destroyed at any time.
+ In a GridView, delegates are instantiated as needed and may be destroyed at any time.
State should \e never be stored in a delegate.
\note Views do not enable \e clip automatically. If the view
is not clipped by another item or the screen, it will be necessary
to set \e {clip: true} in order to have the out of view items clipped
nicely.
+
+ \sa ListModel, GridView
*/
QDeclarativeListView::QDeclarativeListView(QDeclarativeItem *parent)
@@ -1634,7 +1659,7 @@ int QDeclarativeListView::count() const
This property holds the component to use as the highlight.
An instance of the highlight component is created for each list.
- The geometry of the resultant component instance is managed by the list
+ The geometry of the resulting component instance is managed by the list
so as to stay with the current item, unless the highlightFollowsCurrentItem
property is false.
@@ -1667,7 +1692,7 @@ void QDeclarativeListView::setHighlight(QDeclarativeComponent *highlight)
highlight is not moved by the view, and any movement must be implemented
by the highlight.
- Here is a highlight with its motion defined by the a \l {SpringFollow} item:
+ Here is a highlight with its motion defined by a \l {SpringFollow} item:
\snippet doc/src/snippets/declarative/listview/listview.qml highlightFollowsCurrentItem
@@ -2042,8 +2067,8 @@ void QDeclarativeListView::setHighlightResizeDuration(int duration)
/*!
\qmlproperty enumeration ListView::snapMode
- This property determines where the view's scrolling behavior stops following a drag or flick.
- The allowed values are:
+ This property determines how the view scrolling will settle following a drag or flick.
+ The possible values are:
\list
\o ListView.NoSnap (default) - the view stops anywhere within the visible area.
@@ -2075,6 +2100,15 @@ void QDeclarativeListView::setSnapMode(SnapMode mode)
}
}
+/*!
+ \qmlproperty Component ListView::footer
+ This property holds the component to use as the footer.
+
+ An instance of the footer component is created for each view. The
+ footer is positioned at the end of the view, after any items.
+
+ \sa header
+*/
QDeclarativeComponent *QDeclarativeListView::footer() const
{
Q_D(const QDeclarativeListView);
@@ -2098,6 +2132,15 @@ void QDeclarativeListView::setFooter(QDeclarativeComponent *footer)
}
}
+/*!
+ \qmlproperty Component ListView::header
+ This property holds the component to use as the header.
+
+ An instance of the header component is created for each view. The
+ header is positioned at the beginning of the view, before any items.
+
+ \sa footer
+*/
QDeclarativeComponent *QDeclarativeListView::header() const
{
Q_D(const QDeclarativeListView);
@@ -2223,7 +2266,9 @@ qreal QDeclarativeListView::maxYExtent() const
if (d->orient == QDeclarativeListView::Horizontal)
return height();
if (d->maxExtentDirty) {
- if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
+ if (!d->model || !d->model->count()) {
+ d->maxExtent = 0;
+ } else if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
d->maxExtent = -(d->positionAt(d->model->count()-1) - d->highlightRangeStart);
if (d->highlightRangeEnd != d->highlightRangeStart)
d->maxExtent = qMin(d->maxExtent, -(d->endPosition() - d->highlightRangeEnd + 1));
@@ -2265,7 +2310,9 @@ qreal QDeclarativeListView::maxXExtent() const
if (d->orient == QDeclarativeListView::Vertical)
return width();
if (d->maxExtentDirty) {
- if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
+ if (!d->model || !d->model->count()) {
+ d->maxExtent = 0;
+ } else if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) {
d->maxExtent = -(d->positionAt(d->model->count()-1) - d->highlightRangeStart);
if (d->highlightRangeEnd != d->highlightRangeStart)
d->maxExtent = qMin(d->maxExtent, -(d->endPosition() - d->highlightRangeEnd + 1));
diff --git a/src/declarative/graphicsitems/qdeclarativeloader.cpp b/src/declarative/graphicsitems/qdeclarativeloader.cpp
index 4995baf..25b1119 100644
--- a/src/declarative/graphicsitems/qdeclarativeloader.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeloader.cpp
@@ -112,30 +112,48 @@ void QDeclarativeLoaderPrivate::initResize()
\inherits Item
\brief The Loader item allows dynamically loading an Item-based
- subtree from a QML URL or Component.
+ subtree from a URL or Component.
- Loader instantiates an item from a component. The component to
- instantiate may be specified directly by the \c sourceComponent
- property, or loaded from a URL via the \c source property.
+ The Loader element instantiates an item from a component. The component to
+ be instantiated may be specified directly by the \l sourceComponent
+ property, or loaded from a URL via the \l source property.
+
+ Loader can be used to delay the creation of a component until it is required.
+ For example, this loads "Page1.qml" as a component into the \l Loader element
+ when the \l MouseArea is clicked:
- It is also an effective means of delaying the creation of a component
- until it is required:
\code
- Loader { id: pageLoader }
- Rectangle {
- MouseArea { anchors.fill: parent; onClicked: pageLoader.source = "Page1.qml" }
+ import Qt 4.7
+
+ Item {
+ width: 200; height: 200
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: pageLoader.source = "Page1.qml"
+ }
+
+ Loader { id: pageLoader }
}
\endcode
+ Note that Loader is like any other graphical Item and needs to be positioned
+ and sized accordingly to become visible. When a component is loaded, the
+ Loader is automatically resized to the size of the component.
+
If the Loader source is changed, any previous items instantiated
- will be destroyed. Setting \c source to an empty string, or setting
+ will be destroyed. Setting \l source to an empty string, or setting
sourceComponent to \e undefined
will destroy the currently instantiated items, freeing resources
and leaving the Loader empty. For example:
\code
pageLoader.source = ""
+ \endcode
+
or
+
+ \code
pageLoader.sourceComponent = undefined
\endcode
@@ -215,7 +233,7 @@ void QDeclarativeLoader::setSource(const QUrl &url)
/*!
\qmlproperty Component Loader::sourceComponent
- The sourceComponent property holds the \l{Component} to instantiate.
+ This property holds the \l{Component} to instantiate.
\qml
Item {
@@ -229,6 +247,8 @@ void QDeclarativeLoader::setSource(const QUrl &url)
}
\endqml
+ Note this value must hold a \l Component object; it cannot be a \l Item.
+
\sa source, progress
*/
@@ -340,19 +360,31 @@ void QDeclarativeLoaderPrivate::_q_sourceLoaded()
\o Loader.Error - an error occurred while loading the QML source
\endlist
- Note that a change in the status property does not cause anything to happen
- (although it reflects what has happened to the loader internally). If you wish
- to react to the change in status you need to do it yourself, for example in one
- of the following ways:
- \list
- \o Create a state, so that a state change occurs, e.g. State{name: 'loaded'; when: loader.status = Loader.Ready;}
- \o Do something inside the onLoaded signal handler, e.g. Loader{id: loader; onLoaded: console.log('Loaded');}
- \o Bind to the status variable somewhere, e.g. Text{text: if(loader.status!=Loader.Ready){'Not Loaded';}else{'Loaded';}}
- \endlist
- \sa progress
+ Use this status to provide an update or respond to the status change in some way.
+ For example, you could:
+
+ \e {Trigger a state change:}
+ \qml
+ State { name: 'loaded'; when: loader.status = Loader.Ready }
+ \endqml
+
+ \e {Implement an \c onStatusChanged signal handler:}
+ \qml
+ Loader {
+ id: loader
+ onStatusChanged: if (loader.status == Loader.Ready) console.log('Loaded')
+ }
+ \endqml
+
+ \e {Bind to the status value:}
+ \qml
+ Text { text: loader.status != Loader.Ready ? 'Not Loaded' : 'Loaded' }
+ \endqml
Note that if the source is a local file, the status will initially be Ready (or Error). While
there will be no onStatusChanged signal in that case, the onLoaded will still be invoked.
+
+ \sa progress
*/
QDeclarativeLoader::Status QDeclarativeLoader::status() const
@@ -379,7 +411,7 @@ void QDeclarativeLoader::componentComplete()
/*!
\qmlsignal Loader::onLoaded()
- This handler is called when the \l status becomes Loader.Ready, or on successful
+ This handler is called when the \l status becomes \c Loader.Ready, or on successful
initial load.
*/
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
index 1947c00..c4956df 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp
+++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
@@ -172,17 +172,21 @@ QDeclarativeMouseAreaPrivate::~QDeclarativeMouseAreaPrivate()
A MouseArea is typically used in conjunction with a visible item,
where the MouseArea effectively 'proxies' mouse handling for that
- item. For example, we can put a MouseArea in a Rectangle that changes
- the Rectangle color to red when clicked:
- \snippet doc/src/snippets/declarative/mouseregion.qml 0
+ item. For example, we can put a MouseArea in a \l Rectangle that changes
+ the \l Rectangle color to red when clicked:
+
+ \snippet doc/src/snippets/declarative/mousearea.qml import
+ \codeline
+ \snippet doc/src/snippets/declarative/mousearea.qml intro
Many MouseArea signals pass a \l {MouseEvent}{mouse} parameter that contains
additional information about the mouse event, such as the position, button,
and any key modifiers.
- Below we have the previous
- example extended so as to give a different color when you right click.
- \snippet doc/src/snippets/declarative/mouseregion.qml 1
+ Here is an extension of the previous example that produces a different
+ color when the area is right clicked:
+
+ \snippet doc/src/snippets/declarative/mousearea.qml intro-extended
For basic key handling, see the \l {Keys}{Keys attached property}.
@@ -238,7 +242,7 @@ QDeclarativeMouseAreaPrivate::~QDeclarativeMouseAreaPrivate()
releasing is also considered a click).
The \l {MouseEvent}{mouse} parameter provides information about the click, including the x and y
- position of the release of the click, and whether the click wasHeld.
+ position of the release of the click, and whether the click was held.
The \e accepted property of the MouseEvent parameter is ignored in this handler.
*/
@@ -262,7 +266,7 @@ QDeclarativeMouseAreaPrivate::~QDeclarativeMouseAreaPrivate()
This handler is called when there is a release.
The \l {MouseEvent}{mouse} parameter provides information about the click, including the x and y
- position of the release of the click, and whether the click wasHeld.
+ position of the release of the click, and whether the click was held.
The \e accepted property of the MouseEvent parameter is ignored in this handler.
*/
@@ -282,7 +286,7 @@ QDeclarativeMouseAreaPrivate::~QDeclarativeMouseAreaPrivate()
This handler is called when there is a double-click (a press followed by a release followed by a press).
The \l {MouseEvent}{mouse} parameter provides information about the click, including the x and y
- position of the release of the click, and whether the click wasHeld.
+ position of the release of the click, and whether the click was held.
The \e accepted property of the MouseEvent parameter is ignored in this handler.
*/
@@ -301,12 +305,12 @@ QDeclarativeMouseAreaPrivate::~QDeclarativeMouseAreaPrivate()
/*!
\internal
\class QDeclarativeMouseArea
- \brief The QDeclarativeMouseArea class provides a simple mouse handling abstraction for use within Qml.
+ \brief The QDeclarativeMouseArea class provides a simple mouse handling abstraction for use within QML.
All QDeclarativeItem derived classes can do mouse handling but the QDeclarativeMouseArea class exposes mouse
handling data as properties and tracks flicking and dragging of the mouse.
- A QDeclarativeMouseArea object can be instantiated in Qml using the tag \l MouseArea.
+ A QDeclarativeMouseArea object can be instantiated in QML using the tag \l MouseArea.
*/
QDeclarativeMouseArea::QDeclarativeMouseArea(QDeclarativeItem *parent)
: QDeclarativeItem(*(new QDeclarativeMouseAreaPrivate), parent)
@@ -328,10 +332,10 @@ QDeclarativeMouseArea::~QDeclarativeMouseArea()
while a button is pressed, and will remain valid as long as the button is held
even if the mouse is moved outside the area.
- If hoverEnabled is true then these properties will be valid:
+ If hoverEnabled is true then these properties will be valid when:
\list
- \i when no button is pressed, but the mouse is within the MouseArea (containsMouse is true).
- \i if a button is pressed and held, even if it has since moved out of the area.
+ \i no button is pressed, but the mouse is within the MouseArea (containsMouse is true).
+ \i a button is pressed and held, even if it has since moved out of the area.
\endlist
The coordinates are relative to the MouseArea.
@@ -378,18 +382,7 @@ void QDeclarativeMouseArea::setEnabled(bool a)
\endlist
The code below displays "right" when the right mouse buttons is pressed:
- \code
- Text {
- text: mr.pressedButtons & Qt.RightButton ? "right" : ""
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- MouseArea {
- id: mr
- acceptedButtons: Qt.LeftButton | Qt.RightButton
- anchors.fill: parent
- }
- }
- \endcode
+ \snippet doc/src/snippets/declarative/mousearea.qml mousebuttons
\sa acceptedButtons
*/
@@ -417,7 +410,7 @@ void QDeclarativeMouseArea::mousePressEvent(QGraphicsSceneMouseEvent *event)
setHovered(true);
d->startScene = event->scenePos();
// we should only start timer if pressAndHold is connected to.
- if (d->isConnected("pressAndHold(QDeclarativeMouseEvent*)"))
+ if (d->isPressAndHoldConnected())
d->pressAndHoldTimer.start(PressAndHoldDelay, this);
setKeepMouseGrab(false);
event->setAccepted(setPressed(true));
@@ -705,7 +698,7 @@ void QDeclarativeMouseArea::setHovered(bool h)
MouseArea { acceptedButtons: Qt.LeftButton | Qt.RightButton }
\endcode
- The default is to accept the Left button.
+ The default value is \c Qt.LeftButton.
*/
Qt::MouseButtons QDeclarativeMouseArea::acceptedButtons() const
{
@@ -765,17 +758,19 @@ QDeclarativeDrag *QDeclarativeMouseArea::drag()
\qmlproperty real MouseArea::drag.minimumY
\qmlproperty real MouseArea::drag.maximumY
- drag provides a convenient way to make an item draggable.
+ \c drag provides a convenient way to make an item draggable.
\list
- \i \c target specifies the item to drag.
- \i \c active specifies if the target item is being currently dragged.
- \i \c axis specifies whether dragging can be done horizontally (Drag.XAxis), vertically (Drag.YAxis), or both (Drag.XandYAxis)
- \i the minimum and maximum properties limit how far the target can be dragged along the corresponding axes.
+ \i \c drag.target specifies the item to drag.
+ \i \c drag.active specifies if the target item is currently being dragged.
+ \i \c drag.axis specifies whether dragging can be done horizontally (\c Drag.XAxis), vertically (\c Drag.YAxis), or both (\c Drag.XandYAxis)
+ \i \c drag.minimum and \c drag.maximum limit how far the target can be dragged along the corresponding axes.
\endlist
- The following example uses drag to reduce the opacity of an image as it moves to the right:
- \snippet doc/src/snippets/declarative/drag.qml 0
+ The following example displays an image that can be dragged along the X-axis. The opacity
+ of the image is reduced when it is dragged to the right.
+
+ \snippet doc/src/snippets/declarative/mousearea.qml drag
*/
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
index 4e909ff..3d7bd1e 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
@@ -88,9 +88,9 @@ public:
lastModifiers = event->modifiers();
}
- bool isConnected(const char *signal) {
+ bool isPressAndHoldConnected() {
Q_Q(QDeclarativeMouseArea);
- int idx = QObjectPrivate::get(q)->signalIndex(signal);
+ static int idx = QObjectPrivate::get(q)->signalIndex("pressAndHold(QDeclarativeMouseEvent*)");
return QObjectPrivate::get(q)->isSignalConnected(idx);
}
diff --git a/src/declarative/graphicsitems/qdeclarativepath.cpp b/src/declarative/graphicsitems/qdeclarativepath.cpp
index 141a938..a904869 100644
--- a/src/declarative/graphicsitems/qdeclarativepath.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepath.cpp
@@ -628,7 +628,7 @@ void QDeclarativePathLine::addToPath(QPainterPath &path)
\qml
Path {
startX: 0; startY: 0
- PathQuad x: 200; y: 0; controlX: 100; controlY: 150 }
+ PathQuad { x: 200; y: 0; controlX: 100; controlY: 150 }
}
\endqml
\endtable
@@ -713,8 +713,9 @@ void QDeclarativePathQuad::addToPath(QPainterPath &path)
Path {
startX: 20; startY: 0
PathCubic {
- x: 180; y: 0; control1X: -10; control1Y: 90
- control2X: 210; control2Y: 90
+ x: 180; y: 0
+ control1X: -10; control1Y: 90
+ control2X: 210; control2Y: 90
}
}
\endqml
diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp
index 448ec06..0c2d249 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp
@@ -310,11 +310,21 @@ void QDeclarativePathViewPrivate::regenerate()
\brief The PathView element lays out model-provided items on a path.
\inherits Item
- The model is typically provided by a QAbstractListModel "C++ model object", but can also be created directly in QML.
+ A PathView displays data from models created from built-in QML elements like ListModel
+ and XmlListModel, or custom model classes defined in C++ that inherit from
+ QAbstractListModel.
+ A ListView has a \l model, which defines the data to be displayed, and
+ a \l delegate, which defines how the data should be displayed.
The \l delegate is instantiated for each item on the \l path.
The items may be flicked to move them along the path.
+ For example, if there is a simple list model defined in a file \c ContactModel.qml like this:
+
+ \snippet doc/src/snippets/declarative/pathview/ContactModel.qml 0
+
+ This data can be represented as a PathView, like this:
+
\snippet doc/src/snippets/declarative/pathview/pathview.qml 0
\image pathview.gif
@@ -348,6 +358,13 @@ QDeclarativePathView::~QDeclarativePathView()
}
/*!
+ \qmlattachedproperty PathView PathView::view
+ This attached property holds the view that manages this delegate instance.
+
+ It is attached to each instance of the delegate.
+*/
+
+/*!
\qmlattachedproperty bool PathView::onPath
This attached property holds whether the item is currently on the path.
@@ -885,6 +902,7 @@ void QDeclarativePathView::setPathItemCount(int i)
if (i < 1)
i = 1;
d->pathItems = i;
+ d->updateMappedRange();
if (d->isValid() && isComponentComplete()) {
d->regenerate();
}
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners.cpp b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
index 8796e63..ad61bab 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
@@ -219,6 +219,7 @@ void QDeclarativeBasePositioner::prePositioning()
QDeclarativeItem *child = qobject_cast<QDeclarativeItem *>(children.at(ii));
if (!child)
continue;
+ QDeclarativeItemPrivate *childPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(child));
PositionedItem *item = 0;
PositionedItem posItem(child);
int wIdx = oldItems.find(posItem);
@@ -227,11 +228,13 @@ void QDeclarativeBasePositioner::prePositioning()
positionedItems.append(posItem);
item = &positionedItems[positionedItems.count()-1];
item->isNew = true;
- if (child->opacity() <= 0.0 || !child->isVisible())
+ if (child->opacity() <= 0.0 || childPrivate->explicitlyHidden)
item->isVisible = false;
} else {
item = &oldItems[wIdx];
- if (child->opacity() <= 0.0 || !child->isVisible()) {
+ // Items are only omitted from positioning if they are explicitly hidden
+ // i.e. their positioning is not affected if an ancestor is hidden.
+ if (child->opacity() <= 0.0 || childPrivate->explicitlyHidden) {
item->isVisible = false;
} else if (!item->isVisible) {
item->isVisible = true;
@@ -299,10 +302,16 @@ void QDeclarativeBasePositioner::finishApplyTransitions()
d->moveActions.clear();
}
+static inline bool isInvisible(QDeclarativeItem *child)
+{
+ QDeclarativeItemPrivate *childPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(child));
+ return child->opacity() == 0.0 || childPrivate->explicitlyHidden || !child->width() || !child->height();
+}
+
/*!
\qmlclass Column QDeclarativeColumn
\since 4.7
- \brief The Column item lines up its children vertically.
+ \brief The Column item arranges its children vertically.
\inherits Item
The Column item positions its child items so that they are vertically
@@ -346,8 +355,10 @@ Column {
will not change. If you manually change the x or y properties in script, bind
the x or y properties, use anchors on a child of a positioner, or have the
height of a child depend on the position of a child, then the
- positioner may exhibit strange behaviour.
+ positioner may exhibit strange behaviour. If you need to perform any of these
+ actions, consider positioning the items without the use of a Column.
+ \sa Row, {declarative/positioners}{Positioners example}
*/
/*!
\qmlproperty Transition Column::add
@@ -396,7 +407,7 @@ Column {
spacing is the amount in pixels left empty between each adjacent
item, and defaults to 0.
- The below example places a Grid containing a red, a blue and a
+ The below example places a \l Grid containing a red, a blue and a
green rectangle on a gray background. The area the grid positioner
occupies is colored white. The top positioner has the default of no spacing,
and the bottom positioner has its spacing set to 2.
@@ -415,11 +426,6 @@ QDeclarativeColumn::QDeclarativeColumn(QDeclarativeItem *parent)
{
}
-static inline bool isInvisible(QDeclarativeItem *child)
-{
- return child->opacity() == 0.0 || !child->isVisible() || !child->width() || !child->height();
-}
-
void QDeclarativeColumn::doPositioning(QSizeF *contentSize)
{
int voffset = 0;
@@ -468,17 +474,15 @@ void QDeclarativeColumn::reportConflictingAnchors()
/*!
\qmlclass Row QDeclarativeRow
\since 4.7
- \brief The Row item lines up its children horizontally.
+ \brief The Row item arranges its children horizontally.
\inherits Item
The Row item positions its child items so that they are
- horizontally aligned and not overlapping. Spacing can be added between the
- items, and a margin around all items can also be added. It also provides for
- transitions to be set when items are added, moved, or removed in the
- positioner. Adding and removing apply both to items which are deleted or have
- their position in the document changed so as to no longer be children of the
- positioner, as well as to items which have their opacity set to or from zero
- so as to appear or disappear.
+ horizontally aligned and not overlapping.
+
+ Use \l spacing to set the spacing between items in a Row, and use the
+ \l add and \l move properties to set the transitions that should be applied
+ when items are added to, removed from, or re-positioned within the Row.
The below example lays out differently shaped rectangles using a Row.
\qml
@@ -495,8 +499,10 @@ Row {
will not change. If you manually change the x or y properties in script, bind
the x or y properties, use anchors on a child of a positioner, or have the
width of a child depend on the position of a child, then the
- positioner may exhibit strange behaviour.
+ positioner may exhibit strange behaviour. If you need to perform any of these
+ actions, consider positioning the items without the use of a Row.
+ \sa Column, {declarative/positioners}{Positioners example}
*/
/*!
\qmlproperty Transition Row::add
@@ -504,12 +510,10 @@ Row {
The transition will only be applied to the added item(s).
Positioner transitions will only affect the position (x,y) of items.
- Added can mean that either the object has been created or
- reparented, and thus is now a child or the positioner, or that the
+ An object is considered to be added to the positioner if it has been
+ created or reparented and thus is now a child or the positioner, or if the
object has had its opacity increased from zero, and thus is now
visible.
-
-
*/
/*!
\qmlproperty Transition Row::move
@@ -540,7 +544,7 @@ Row {
spacing is the amount in pixels left empty between each adjacent
item, and defaults to 0.
- The below example places a Grid containing a red, a blue and a
+ The below example places a \l Grid containing a red, a blue and a
green rectangle on a gray background. The area the grid positioner
occupies is colored white. The top positioner has the default of no spacing,
and the bottom positioner has its spacing set to 2.
@@ -610,18 +614,20 @@ void QDeclarativeRow::reportConflictingAnchors()
\inherits Item
The Grid item positions its child items so that they are
- aligned in a grid and are not overlapping. Spacing can be added
- between the items. It also provides for transitions to be set when items are
+ aligned in a grid and are not overlapping.
+
+ Spacing can be added
+ between child items. It also provides for transitions to be set when items are
added, moved, or removed in the positioner. Adding and removing apply
both to items which are deleted or have their position in the
document changed so as to no longer be children of the positioner, as
well as to items which have their opacity set to or from zero so
as to appear or disappear.
- The Grid defaults to using four columns, and as many rows as
- are necessary to fit all the child items. The number of rows
- and/or the number of columns can be constrained by setting the rows
- or columns properties. The grid positioner calculates a grid with
+ A Grid defaults to four columns, and as many rows as
+ are necessary to fit all child items. The number of rows
+ and/or the number of columns can be constrained by setting the \l rows
+ or \l columns properties. The grid positioner calculates a grid with
rectangular cells of sufficient size to hold all items, and then
places the items in the cells, going across then down, and
positioning each item at the (0,0) corner of the cell. The below
@@ -648,7 +654,10 @@ Grid {
will not change. If you manually change the x or y properties in script, bind
the x or y properties, use anchors on a child of a positioner, or have the
width or height of a child depend on the position of a child, then the
- positioner may exhibit strange behaviour.
+ positioner may exhibit strange behaviour. If you need to perform any of these
+ actions, consider positioning the items without the use of a Grid.
+
+ \sa Flow, {declarative/positioners}{Positioners example}
*/
/*!
\qmlproperty Transition Grid::add
@@ -658,12 +667,10 @@ Grid {
as that is all the positioners affect. To animate other property change
you will have to do so based on how you have changed those properties.
- Added can mean that either the object has been created or
- reparented, and thus is now a child or the positioner, or that the
+ An object is considered to be added to the positioner if it has been
+ created or reparented and thus is now a child or the positioner, or if the
object has had its opacity increased from zero, and thus is now
visible.
-
-
*/
/*!
\qmlproperty Transition Grid::move
@@ -714,18 +721,16 @@ QDeclarativeGrid::QDeclarativeGrid(QDeclarativeItem *parent) :
\qmlproperty int Grid::columns
This property holds the number of columns in the grid.
- When the columns property is set the Grid will always have
- that many columns. Note that if you do not have enough items to
- fill this many columns some columns will be of zero width.
+ If the grid does not have enough items to fill the specified
+ number of columns, some columns will be of zero width.
*/
/*!
\qmlproperty int Grid::rows
This property holds the number of rows in the grid.
- When the rows property is set the Grid will always have that
- many rows. Note that if you do not have enough items to fill this
- many rows some rows will be of zero width.
+ If the grid does not have enough items to fill the specified
+ number of rows, some rows will be of zero width.
*/
void QDeclarativeGrid::setColumns(const int columns)
@@ -750,12 +755,14 @@ void QDeclarativeGrid::setRows(const int rows)
\qmlproperty enumeration Grid::flow
This property holds the flow of the layout.
- Possible values are \c Grid.LeftToRight (default) and \c Grid.TopToBottom.
+ Possible values are:
- If \a flow is \c Grid.LeftToRight, the items are positioned next to
- to each other from left to right, then wrapped to the next line.
- If \a flow is \c Grid.TopToBottom, the items are positioned next to each
- other from top to bottom, then wrapped to the next column.
+ \list
+ \o Grid.LeftToRight (default) - Items are positioned next to
+ to each other from left to right, then wrapped to the next line.
+ \o Grid.TopToBottom - Items are positioned next to each
+ other from top to bottom, then wrapped to the next column.
+ \endlist
*/
QDeclarativeGrid::Flow QDeclarativeGrid::flow() const
{
@@ -893,15 +900,20 @@ void QDeclarativeGrid::reportConflictingAnchors()
/*!
\qmlclass Flow QDeclarativeFlow
\since 4.7
- \brief The Flow item lines up its children side by side, wrapping as necessary.
+ \brief The Flow item arranges its children side by side, wrapping as necessary.
\inherits Item
+ The Flow item positions its child items so that they are side by side and are
+ not overlapping.
+
Note that the positioner assumes that the x and y positions of its children
will not change. If you manually change the x or y properties in script, bind
the x or y properties, use anchors on a child of a positioner, or have the
width or height of a child depend on the position of a child, then the
- positioner may exhibit strange behaviour.
+ positioner may exhibit strange behaviour. If you need to perform any of these
+ actions, consider positioning the items without the use of a Flow.
+ \sa Grid, {declarative/positioners}{Positioners example}
*/
/*!
\qmlproperty Transition Flow::add
@@ -909,9 +921,10 @@ void QDeclarativeGrid::reportConflictingAnchors()
The transition will only be applied to the added item(s).
Positioner transitions will only affect the position (x,y) of items.
- Added can mean that either the object has been created or reparented, and thus is now a child or the positioner, or that the object has had its opacity increased from zero, and thus is now visible.
-
-
+ An object is considered to be added to the positioner if it has been
+ created or reparented and thus is now a child or the positioner, or if the
+ object has had its opacity increased from zero, and thus is now
+ visible.
*/
/*!
\qmlproperty Transition Flow::move
@@ -965,14 +978,16 @@ QDeclarativeFlow::QDeclarativeFlow(QDeclarativeItem *parent)
\qmlproperty enumeration Flow::flow
This property holds the flow of the layout.
- Possible values are \c Flow.LeftToRight (default) and \c Flow.TopToBottom.
+ Possible values are:
- If \a flow is \c Flow.LeftToRight, the items are positioned next to
+ \list
+ \o Flow.LeftToRight (default) - Items are positioned next to
to each other from left to right until the width of the Flow
is exceeded, then wrapped to the next line.
- If \a flow is \c Flow.TopToBottom, the items are positioned next to each
+ \o Flow.TopToBottom - Items are positioned next to each
other from top to bottom until the height of the Flow is exceeded,
then wrapped to the next column.
+ \endlist
*/
QDeclarativeFlow::Flow QDeclarativeFlow::flow() const
{
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
index 04f0181..822079b 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
@@ -100,18 +100,23 @@ public:
bool doingPositioning : 1;
bool anchorConflict : 1;
- virtual void itemSiblingOrderChanged(QDeclarativeItem* other)
+ void schedulePositioning()
{
Q_Q(QDeclarativeBasePositioner);
- Q_UNUSED(other);
if(!queuedPositioning){
- //Delay is due to many children often being reordered at once
- //And we only want to reposition them all once
QTimer::singleShot(0,q,SLOT(prePositioning()));
queuedPositioning = true;
}
}
+ virtual void itemSiblingOrderChanged(QDeclarativeItem* other)
+ {
+ Q_UNUSED(other);
+ //Delay is due to many children often being reordered at once
+ //And we only want to reposition them all once
+ schedulePositioning();
+ }
+
void itemGeometryChanged(QDeclarativeItem *, const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_Q(QDeclarativeBasePositioner);
@@ -120,8 +125,7 @@ public:
}
virtual void itemVisibilityChanged(QDeclarativeItem *)
{
- Q_Q(QDeclarativeBasePositioner);
- q->prePositioning();
+ schedulePositioning();
}
virtual void itemOpacityChanged(QDeclarativeItem *)
{
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
index de3dbcd..2756877 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
@@ -160,6 +160,8 @@ void QDeclarativeGradient::doUpdate()
You can also create rounded rectangles using the \l radius property.
\qml
+ import Qt 4.7
+
Rectangle {
width: 100
height: 100
@@ -206,7 +208,7 @@ void QDeclarativeRectangle::doUpdate()
border smoothness. Also, the border is rendered evenly on either side of the
rectangle's boundaries, and the spare pixel is rendered to the right and below the
rectangle (as documented for QRect rendering). This can cause unintended effects if
- \c border.width is 1 and the rectangle is \l{clip}{clipped} by a parent item:
+ \c border.width is 1 and the rectangle is \l{Item::clip}{clipped} by a parent item:
\table
\row
diff --git a/src/declarative/graphicsitems/qdeclarativerepeater.cpp b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
index 691cfa2..995e22a 100644
--- a/src/declarative/graphicsitems/qdeclarativerepeater.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
@@ -65,55 +65,75 @@ QDeclarativeRepeaterPrivate::~QDeclarativeRepeaterPrivate()
\since 4.7
\inherits Item
- \brief The Repeater item allows you to repeat an Item-based component using a model.
+ \brief The Repeater element allows you to repeat an Item-based component using a model.
- The Repeater item is used to create a large number of
- similar items. For each entry in the model, an item is instantiated
- in a context seeded with data from the model. If the repeater will
- be instantiating a large number of instances, it may be more efficient to
- use one of Qt Declarative's \l {xmlViews}{view items}.
+ The Repeater element is used to create a large number of
+ similar items. Like other view elements, a Repeater has a \l model and a \l delegate:
+ for each entry in the model, the delegate is instantiated
+ in a context seeded with data from the model. A Repeater item is usually
+ enclosed in a positioner element such as \l Row or \l Column to visually
+ position the multiple delegate items created by the Repeater.
- The model may be either an object list, a string list, a number or a Qt model.
- In each case, the data element and the index is exposed to each instantiated
- component.
-
- The index is always exposed as an accessible \c index property.
- In the case of an object or string list, the data element (of type string
- or object) is available as the \c modelData property. In the case of a Qt model,
- all roles are available as named properties just like in the view classes.
+ The following Repeater creates three instances of a \l Rectangle item within
+ a \l Row:
+
+ \snippet doc/src/snippets/declarative/repeater.qml import
+ \codeline
+ \snippet doc/src/snippets/declarative/repeater.qml simple
+
+ \image repeater-simple.png
+
+ The \l model of a Repeater can be specified as a model object, a number, a string list
+ or an object list. If a model object is used, the
+ \l delegate can access the model roles as named properties, just as for view elements like
+ ListView and GridView.
- The following example shows how to use the \c index property inside the instantiated
- items:
+ The \l delegate can also access two additional properties:
- \snippet doc/src/snippets/declarative/repeater-index.qml 0
- \image repeater-index.png
+ \list
+ \o \c index - the index of the delegate's item
+ \o \c modelData - the data element for the delegate, which is useful where the \l model is a string or object list
+ \endlist
- The repeater could also use the \c modelData property to reference the data for a
+ Here is a Repeater that uses the \c index property inside the instantiated items:
+
+ \table
+ \row
+ \o \snippet doc/src/snippets/declarative/repeater.qml index
+ \o \image repeater-index.png
+ \endtable
+
+ Here is another Repeater that uses the \c modelData property to reference the data for a
particular index:
- \snippet doc/src/snippets/declarative/repeater-modeldata.qml 0
- \image repeater-modeldata.png
+ \table
+ \row
+ \o \snippet doc/src/snippets/declarative/repeater.qml modeldata
+ \o \image repeater-modeldata.png
+ \endtable
Items instantiated by the Repeater are inserted, in order, as
children of the Repeater's parent. The insertion starts immediately after
- the repeater's position in its parent stacking list. This is to allow
- you to use a Repeater inside a layout. The following QML example shows how
- the instantiated items would visually appear stacked between the red and
- blue rectangles.
-
- \snippet doc/src/snippets/declarative/repeater.qml 0
+ the repeater's position in its parent stacking list. This allows
+ a Repeater to be used inside a layout. For example, the following Repeater's
+ items are stacked between a red rectangle and a blue rectangle:
+
+ \snippet doc/src/snippets/declarative/repeater.qml layout
\image repeater.png
- The repeater instance continues to own all items it instantiates, even
- if they are otherwise manipulated. It is illegal to manually remove an item
- created by the Repeater.
+ A Repeater item owns all items it instantiates. Removing or dynamically destroying
+ an item created by a Repeater results in unpredictable behavior.
- \note Repeater is Item-based, and cannot be used to repeat non-Item-derived objects.
+ Note that if a repeater is
+ required to instantiate a large number of items, it may be more efficient to
+ use other view elements such as ListView.
+
+ \note Repeater is \l {Item}-based, and can only repeat \l {Item}-derived objects.
For example, it cannot be used to repeat QtObjects.
\badcode
Item {
- //XXX illegal. Can't repeat QtObject as it doesn't derive from Item.
+ //XXX does not work! Can't repeat QtObject as it doesn't derive from Item.
Repeater {
model: 10
QtObject {}
@@ -149,7 +169,15 @@ QDeclarativeRepeater::~QDeclarativeRepeater()
The model providing data for the repeater.
- The model may be either an object list, a string list, a number or a Qt model.
+ This property can be set to any of the following:
+
+ \list
+ \o A number that indicates the number of delegates to be created
+ \o A model (e.g. a ListModel item, or a QAbstractItemModel subclass)
+ \o A string list
+ \o An object list
+ \endlist
+
In each case, the data element and the index is exposed to each instantiated
component. The index is always exposed as an accessible \c index property.
In the case of an object or string list, the data element (of type string
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index 55cef8b..c2e0d67 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -126,10 +126,10 @@ QSet<QUrl> QTextDocumentWithImageResources::errors;
\image declarative-text.png
If height and width are not explicitly set, Text will attempt to determine how
- much room is needed and set it accordingly. Unless \c wrapMode is set, it will always
+ much room is needed and set it accordingly. Unless \l wrapMode is set, it will always
prefer width to height (all text will be placed on a single line).
- The \c elide property can alternatively be used to fit a single line of
+ The \l elide property can alternatively be used to fit a single line of
plain text to a set width.
Note that the \l{Supported HTML Subset} is limited. Also, if the text contains
@@ -161,7 +161,7 @@ QSet<QUrl> QTextDocumentWithImageResources::errors;
The \c elide property can alternatively be used to fit a line of plain text to a set width.
- A QDeclarativeText object can be instantiated in Qml using the tag \c Text.
+ A QDeclarativeText object can be instantiated in QML using the tag \c Text.
*/
QDeclarativeText::QDeclarativeText(QDeclarativeItem *parent)
: QDeclarativeItem(*(new QDeclarativeTextPrivate), parent)
@@ -477,6 +477,7 @@ void QDeclarativeText::setHAlign(HAlignment align)
return;
d->hAlign = align;
+ update();
emit horizontalAlignmentChanged(align);
}
@@ -493,6 +494,7 @@ void QDeclarativeText::setVAlign(VAlignment align)
return;
d->vAlign = align;
+ update();
emit verticalAlignmentChanged(align);
}
@@ -503,13 +505,11 @@ void QDeclarativeText::setVAlign(VAlignment align)
wrap if an explicit width has been set. wrapMode can be one of:
\list
- \o Text.NoWrap - no wrapping will be performed. If the text contains insufficient newlines, then implicitWidth will exceed a set width.
- \o Text.WordWrap - wrapping is done on word boundaries only. If a word is too long, implicitWidth will exceed a set width.
+ \o Text.NoWrap (default) - no wrapping will be performed. If the text contains insufficient newlines, then \l paintedWidth will exceed a set width.
+ \o Text.WordWrap - wrapping is done on word boundaries only. If a word is too long, \l paintedWidth will exceed a set width.
\o Text.WrapAnywhere - wrapping is done at any point on a line, even if it occurs in the middle of a word.
\o Text.Wrap - if possible, wrapping occurs at a word boundary; otherwise it will occur at the appropriate point on the line, even in the middle of a word.
\endlist
-
- The default is Text.NoWrap.
*/
QDeclarativeText::WrapMode QDeclarativeText::wrapMode() const
{
@@ -539,13 +539,13 @@ void QDeclarativeText::setWrapMode(WrapMode mode)
Supported text formats are:
\list
- \o Text.AutoText
+ \o Text.AutoText (default)
\o Text.PlainText
\o Text.RichText
\o Text.StyledText
\endlist
- The default is Text.AutoText. If the text format is Text.AutoText the text element
+ If the text format is \c Text.AutoText the text element
will automatically determine whether the text should be treated as
rich text. This determination is made using Qt::mightBeRichText().
@@ -1167,7 +1167,7 @@ void QDeclarativeText::mousePressEvent(QGraphicsSceneMouseEvent *event)
}
/*!
- \qmlsignal Text::linkActivated(link)
+ \qmlsignal Text::onLinkActivated(link)
This handler is called when the user clicks on a link embedded in the text.
*/
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index ffb7dfe..3106daf 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -62,25 +62,28 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass TextEdit QDeclarativeTextEdit
\since 4.7
- \brief The TextEdit item allows you to add editable formatted text to a scene.
+ \brief The TextEdit item displays multiple lines of editable formatted text.
\inherits Item
+ The TextEdit item displays a block of editable, formatted text.
+
It can display both plain and rich text. For example:
\qml
TextEdit {
- id: edit
+ width: 240
text: "<b>Hello</b> <i>World!</i>"
- focus: true
font.family: "Helvetica"
font.pointSize: 20
color: "blue"
- width: 240
+ focus: true
}
\endqml
\image declarative-textedit.gif
+ Setting \l {Item::focus}{focus} to \c true enables the TextEdit item to receive keyboard focus.
+
Note that the TextEdit does not implement scrolling, following the cursor, or other behaviors specific
to a look-and-feel. For example, to add flickable scrolling that follows the cursor:
@@ -96,7 +99,7 @@ TextEdit {
You can translate between cursor positions (characters from the start of the document) and pixel
points using positionAt() and positionToRectangle().
- \sa Text
+ \sa Text, TextInput
*/
/*!
@@ -110,7 +113,7 @@ TextEdit {
\image declarative-textedit.png
- A QDeclarativeTextEdit object can be instantiated in Qml using the tag \c &lt;TextEdit&gt;.
+ A QDeclarativeTextEdit object can be instantiated in QML using the tag \c &lt;TextEdit&gt;.
*/
/*!
@@ -206,7 +209,7 @@ QString QDeclarativeTextEdit::text() const
Sets the font size in pixels.
Using this function makes the font device dependent.
- Use \c pointSize to set the size of the font in a device independent manner.
+ Use \l pointSize to set the size of the font in a device independent manner.
*/
/*!
@@ -453,12 +456,22 @@ void QDeclarativeTextEdit::setSelectedTextColor(const QColor &color)
\qmlproperty enumeration TextEdit::horizontalAlignment
\qmlproperty enumeration TextEdit::verticalAlignment
- Sets the horizontal and vertical alignment of the text within the TextEdit items
+ Sets the horizontal and vertical alignment of the text within the TextEdit item's
width and height. By default, the text is top-left aligned.
- The valid values for \c horizontalAlignment are \c TextEdit.AlignLeft, \c TextEdit.AlignRight and
- \c TextEdit.AlignHCenter. The valid values for \c verticalAlignment are \c TextEdit.AlignTop, \c TextEdit.AlignBottom
- and \c TextEdit.AlignVCenter.
+ Valid values for \c horizontalAlignment are:
+ \list
+ \o TextEdit.AlignLeft (default)
+ \o TextEdit.AlignRight
+ \o TextEdit.AlignHCenter
+ \endlist
+
+ Valid values for \c verticalAlignment are:
+ \list
+ \o TextEdit.AlignTop (default)
+ \o TextEdit.AlignBottom
+ \c TextEdit.AlignVCenter
+ \endlist
*/
QDeclarativeTextEdit::HAlignment QDeclarativeTextEdit::hAlign() const
{
@@ -529,8 +542,8 @@ void QDeclarativeTextEdit::setWrapMode(WrapMode mode)
/*!
\qmlproperty real TextEdit::paintedWidth
- Returns the width of the text, including width past the width
- which is covered due to insufficient wrapping if WrapMode is set.
+ Returns the width of the text, including the width past the width
+ which is covered due to insufficient wrapping if \l wrapMode is set.
*/
qreal QDeclarativeTextEdit::paintedWidth() const
{
@@ -540,8 +553,8 @@ qreal QDeclarativeTextEdit::paintedWidth() const
/*!
\qmlproperty real TextEdit::paintedHeight
- Returns the height of the text, including height past the height
- which is covered due to there being more text than fits in the set height.
+ Returns the height of the text, including the height past the height
+ that is covered if the text does not fit within the set height.
*/
qreal QDeclarativeTextEdit::paintedHeight() const
{
@@ -567,10 +580,10 @@ QRectF QDeclarativeTextEdit::positionToRectangle(int pos) const
/*!
\qmlmethod int TextEdit::positionAt(x,y)
- Returns the text position closest to pixel position (\a x,\a y).
+ Returns the text position closest to pixel position (\a x, \a y).
Position 0 is before the first character, position 1 is after the first character
- but before the second, and so on until position text.length, which is after all characters.
+ but before the second, and so on until position \l {text}.length, which is after all characters.
*/
int QDeclarativeTextEdit::positionAt(int x, int y) const
{
@@ -1056,6 +1069,7 @@ void QDeclarativeTextEdit::select(int start, int end)
updateSelectionMarkers();
}
+#ifndef QT_NO_CLIPBOARD
/*!
\qmlmethod TextEdit::cut()
@@ -1081,14 +1095,14 @@ void QDeclarativeTextEdit::copy()
/*!
\qmlmethod TextEdit::paste()
- Relaces the currently selected text by the contents of the system clipboard.
+ Replaces the currently selected text by the contents of the system clipboard.
*/
void QDeclarativeTextEdit::paste()
{
Q_D(QDeclarativeTextEdit);
d->control->paste();
}
-
+#endif // QT_NO_CLIPBOARD
/*!
\overload
@@ -1099,16 +1113,16 @@ void QDeclarativeTextEdit::mousePressEvent(QGraphicsSceneMouseEvent *event)
Q_D(QDeclarativeTextEdit);
if (d->focusOnPress){
bool hadFocus = hasFocus();
- QGraphicsItem *p = parentItem();//###Is there a better way to find my focus scope?
- while(p) {
- if (p->flags() & QGraphicsItem::ItemIsFocusScope)
- p->setFocus();
- p = p->parentItem();
- }
- setFocus(true);
- if (hasFocus() == hadFocus && d->showInputPanelOnFocus && !isReadOnly()) {
- // re-open input panel on press if already focused
- openSoftwareInputPanel();
+ forceFocus();
+ if (d->showInputPanelOnFocus) {
+ if (hasFocus() && hadFocus && !isReadOnly()) {
+ // re-open input panel on press if already focused
+ openSoftwareInputPanel();
+ }
+ } else { // show input panel on click
+ if (hasFocus() && !hadFocus) {
+ d->clickCausedFocus = true;
+ }
}
}
if (event->type() != QEvent::GraphicsSceneMouseDoubleClick || d->selectByMouse)
@@ -1125,6 +1139,17 @@ void QDeclarativeTextEdit::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeTextEdit);
d->control->processEvent(event, QPointF(0, -d->yoff));
+ if (!d->showInputPanelOnFocus) { // input panel on click
+ if (d->focusOnPress && !isReadOnly() && boundingRect().contains(event->pos())) {
+ if (QGraphicsView * view = qobject_cast<QGraphicsView*>(qApp->focusWidget())) {
+ if (view->scene() && view->scene() == scene()) {
+ qt_widget_private(view)->handleSoftwareInputPanel(event->button(), d->clickCausedFocus);
+ }
+ }
+ }
+ }
+ d->clickCausedFocus = false;
+
if (!event->isAccepted())
QDeclarativePaintedItem::mouseReleaseEvent(event);
}
@@ -1372,10 +1397,14 @@ void QDeclarativeTextEditPrivate::updateDefaultTextOption()
customizing when you want the input keyboard to be shown and hidden in
your application.
- By default input panels are shown when TextEdit element gains focus and hidden
- when the focus is lost. You can disable the automatic behavior by setting the
- property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
- and closeSoftwareInputPanel() to implement the behavior you want.
+ By default the opening of input panels follows the platform style. On Symbian^1 and
+ Symbian^3 -based devices the panels are opened by clicking TextEdit. On other platforms
+ the panels are automatically opened when TextEdit element gains focus. Input panels are
+ always closed if no editor owns focus.
+
+ You can disable the automatic behavior by setting the property \c focusOnPress to false
+ and use functions openSoftwareInputPanel() and closeSoftwareInputPanel() to implement
+ the behavior you want.
Only relevant on platforms, which provide virtual keyboards.
@@ -1384,12 +1413,19 @@ void QDeclarativeTextEditPrivate::updateDefaultTextOption()
TextEdit {
id: textEdit
text: "Hello world!"
- showInputPanelOnFocus: false
+ focusOnPress: false
MouseArea {
anchors.fill: parent
- onClicked: textEdit.openSoftwareInputPanel()
+ onClicked: {
+ if (!textEdit.focus) {
+ textEdit.focus = true;
+ textEdit.openSoftwareInputPanel();
+ } else {
+ textEdit.focus = false;
+ }
+ }
+ onPressAndHold: textEdit.closeSoftwareInputPanel();
}
- onFocusChanged: if (!focus) closeSoftwareInputpanel()
}
\endcode
*/
@@ -1412,10 +1448,14 @@ void QDeclarativeTextEdit::openSoftwareInputPanel()
for customizing when you want the input keyboard to be shown and hidden in
your application.
- By default input panels are shown when TextEdit element gains focus and hidden
- when the focus is lost. You can disable the automatic behavior by setting the
- property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
- and closeSoftwareInputPanel() to implement the behavior you want.
+ By default the opening of input panels follows the platform style. On Symbian^1 and
+ Symbian^3 -based devices the panels are opened by clicking TextEdit. On other platforms
+ the panels are automatically opened when TextEdit element gains focus. Input panels are
+ always closed if no editor owns focus.
+
+ You can disable the automatic behavior by setting the property \c focusOnPress to false
+ and use functions openSoftwareInputPanel() and closeSoftwareInputPanel() to implement
+ the behavior you want.
Only relevant on platforms, which provide virtual keyboards.
@@ -1424,12 +1464,19 @@ void QDeclarativeTextEdit::openSoftwareInputPanel()
TextEdit {
id: textEdit
text: "Hello world!"
- showInputPanelOnFocus: false
+ focusOnPress: false
MouseArea {
anchors.fill: parent
- onClicked: textEdit.openSoftwareInputPanel()
+ onClicked: {
+ if (!textEdit.focus) {
+ textEdit.focus = true;
+ textEdit.openSoftwareInputPanel();
+ } else {
+ textEdit.focus = false;
+ }
+ }
+ onPressAndHold: textEdit.closeSoftwareInputPanel();
}
- onFocusChanged: if (!focus) closeSoftwareInputpanel()
}
\endcode
*/
@@ -1445,46 +1492,15 @@ void QDeclarativeTextEdit::closeSoftwareInputPanel()
}
}
-/*!
- \qmlproperty bool TextEdit::showInputPanelOnFocus
- Whether input panels are automatically shown when TextEdit element gains
- focus and hidden when focus is lost. By default this is set to true.
-
- Only relevant on platforms, which provide virtual keyboards.
-*/
-bool QDeclarativeTextEdit::showInputPanelOnFocus() const
-{
- Q_D(const QDeclarativeTextEdit);
- return d->showInputPanelOnFocus;
-}
-
-void QDeclarativeTextEdit::setShowInputPanelOnFocus(bool showOnFocus)
-{
- Q_D(QDeclarativeTextEdit);
- if (d->showInputPanelOnFocus == showOnFocus)
- return;
-
- d->showInputPanelOnFocus = showOnFocus;
-
- emit showInputPanelOnFocusChanged(d->showInputPanelOnFocus);
-}
-
void QDeclarativeTextEdit::focusInEvent(QFocusEvent *event)
{
Q_D(const QDeclarativeTextEdit);
- if (d->showInputPanelOnFocus && !isReadOnly() && event->reason() != Qt::ActiveWindowFocusReason) {
- openSoftwareInputPanel();
+ if (d->showInputPanelOnFocus) {
+ if (d->focusOnPress && !isReadOnly()) {
+ openSoftwareInputPanel();
+ }
}
QDeclarativePaintedItem::focusInEvent(event);
}
-void QDeclarativeTextEdit::focusOutEvent(QFocusEvent *event)
-{
- Q_D(const QDeclarativeTextEdit);
- if (d->showInputPanelOnFocus && !isReadOnly()) {
- closeSoftwareInputPanel();
- }
- QDeclarativePaintedItem::focusOutEvent(event);
-}
-
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
index 3abfc35..d08f607 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
@@ -86,7 +86,6 @@ class Q_DECLARATIVE_EXPORT QDeclarativeTextEdit : public QDeclarativePaintedItem
Q_PROPERTY(int selectionEnd READ selectionEnd NOTIFY selectionEndChanged)
Q_PROPERTY(QString selectedText READ selectedText NOTIFY selectionChanged)
Q_PROPERTY(bool focusOnPress READ focusOnPress WRITE setFocusOnPress NOTIFY focusOnPressChanged)
- Q_PROPERTY(bool showInputPanelOnFocus READ showInputPanelOnFocus WRITE setShowInputPanelOnFocus NOTIFY showInputPanelOnFocusChanged)
Q_PROPERTY(bool persistentSelection READ persistentSelection WRITE setPersistentSelection NOTIFY persistentSelectionChanged)
Q_PROPERTY(qreal textMargin READ textMargin WRITE setTextMargin NOTIFY textMarginChanged)
Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints)
@@ -167,9 +166,6 @@ public:
bool focusOnPress() const;
void setFocusOnPress(bool on);
- bool showInputPanelOnFocus() const;
- void setShowInputPanelOnFocus(bool showOnFocus);
-
bool persistentSelection() const;
void setPersistentSelection(bool on);
@@ -222,15 +218,16 @@ Q_SIGNALS:
void persistentSelectionChanged(bool isPersistentSelection);
void textMarginChanged(qreal textMargin);
void selectByMouseChanged(bool selectByMouse);
- void showInputPanelOnFocusChanged(bool showOnFocus);
public Q_SLOTS:
void selectAll();
void selectWord();
void select(int start, int end);
+#ifndef QT_NO_CLIPBOARD
void cut();
void copy();
void paste();
+#endif
private Q_SLOTS:
void updateImgCache(const QRectF &rect);
@@ -250,7 +247,6 @@ protected:
void keyPressEvent(QKeyEvent *);
void keyReleaseEvent(QKeyEvent *);
void focusInEvent(QFocusEvent *event);
- void focusOutEvent(QFocusEvent *event);
// mouse filter?
void mousePressEvent(QGraphicsSceneMouseEvent *event);
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
index 8e1d630..4092e65 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
@@ -70,12 +70,17 @@ public:
QDeclarativeTextEditPrivate()
: color("black"), hAlign(QDeclarativeTextEdit::AlignLeft), vAlign(QDeclarativeTextEdit::AlignTop),
imgDirty(true), dirty(false), richText(false), cursorVisible(false), focusOnPress(true),
- showInputPanelOnFocus(true), persistentSelection(true), textMargin(0.0), lastSelectionStart(0),
- lastSelectionEnd(0), cursorComponent(0), cursor(0), format(QDeclarativeTextEdit::AutoText),
- document(0), wrapMode(QDeclarativeTextEdit::NoWrap),
+ showInputPanelOnFocus(true), clickCausedFocus(false), persistentSelection(true), textMargin(0.0),
+ lastSelectionStart(0), lastSelectionEnd(0), cursorComponent(0), cursor(0),
+ format(QDeclarativeTextEdit::AutoText), document(0), wrapMode(QDeclarativeTextEdit::NoWrap),
selectByMouse(false),
yoff(0)
{
+#ifdef Q_OS_SYMBIAN
+ if (QSysInfo::symbianVersion() == QSysInfo::SV_SF_1 || QSysInfo::symbianVersion() == QSysInfo::SV_SF_3) {
+ showInputPanelOnFocus = false;
+ }
+#endif
}
void init();
@@ -102,6 +107,7 @@ public:
bool cursorVisible : 1;
bool focusOnPress : 1;
bool showInputPanelOnFocus : 1;
+ bool clickCausedFocus : 1;
bool persistentSelection : 1;
qreal textMargin;
int lastSelectionStart;
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 7b96c0c..cba01ef 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -56,17 +56,20 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass TextInput QDeclarativeTextInput
\since 4.7
- \brief The TextInput item allows you to add an editable line of text to a scene.
+ \brief The TextInput item displays an editable line of text.
\inherits Item
- TextInput can only display a single line of text, and can only display
- plain text. However it can provide addition input constraints on the text.
+ The TextInput element displays a single line of editable plain text.
- Input constraints include setting a QValidator, an input mask, or a
- maximum input length.
+ TextInput is used to accept a line of text input. Input constraints
+ can be placed on a TextInput item (for example, through a \l validator or \l inputMask),
+ and setting \l echoMode to an appropriate value enables TextInput to be used for
+ a password input field.
On Mac OS X, the Up/Down key bindings for Home/End are explicitly disabled.
If you want such bindings (on any platform), you will need to construct them in QML.
+
+ \sa TextEdit, Text
*/
QDeclarativeTextInput::QDeclarativeTextInput(QDeclarativeItem* parent)
: QDeclarativePaintedItem(*(new QDeclarativeTextInputPrivate), parent)
@@ -249,7 +252,12 @@ QColor QDeclarativeTextInput::color() const
void QDeclarativeTextInput::setColor(const QColor &c)
{
Q_D(QDeclarativeTextInput);
- d->color = c;
+ if (c != d->color) {
+ d->color = c;
+ clearCache();
+ update();
+ emit colorChanged(c);
+ }
}
@@ -553,7 +561,7 @@ void QDeclarativeTextInput::setAutoScroll(bool b)
/*!
\qmlclass IntValidator QIntValidator
- This element provides a validator for integer values
+ This element provides a validator for integer values.
*/
/*!
\qmlproperty int IntValidator::top
@@ -596,10 +604,14 @@ void QDeclarativeTextInput::setAutoScroll(bool b)
\qmlproperty enumeration DoubleValidator::notation
This property holds the notation of how a string can describe a number.
- The values for this property are DoubleValidator.StandardNotation or DoubleValidator.ScientificNotation.
- If this property is set to DoubleValidator.ScientificNotation, the written number may have an exponent part(i.e. 1.5E-2).
+ The possible values for this property are:
+
+ \list
+ \o DoubleValidator.StandardNotation
+ \o DoubleValidator.ScientificNotation (default)
+ \endlist
- By default, this property is set to DoubleValidator.ScientificNotation.
+ If this property is set to DoubleValidator.ScientificNotation, the written number may have an exponent part (e.g. 1.5E-2).
*/
/*!
@@ -891,24 +903,39 @@ void QDeclarativeTextInput::keyPressEvent(QKeyEvent* ev)
QDeclarativePaintedItem::keyPressEvent(ev);
}
+/*!
+\overload
+Handles the given mouse \a event.
+*/
+void QDeclarativeTextInput::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
+{
+ Q_D(QDeclarativeTextInput);
+ if (d->selectByMouse) {
+ int cursor = d->xToPos(event->pos().x());
+ d->control->selectWordAtPos(cursor);
+ event->setAccepted(true);
+ } else {
+ QDeclarativePaintedItem::mouseDoubleClickEvent(event);
+ }
+}
+
void QDeclarativeTextInput::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeTextInput);
if(d->focusOnPress){
bool hadFocus = hasFocus();
- QGraphicsItem *p = parentItem();//###Is there a better way to find my focus scope?
- while(p) {
- if (p->flags() & QGraphicsItem::ItemIsFocusScope)
- p->setFocus();
- p = p->parentItem();
- }
- setFocus(true);
- if (hasFocus() == hadFocus && d->showInputPanelOnFocus && !isReadOnly()) {
- // re-open input panel on press w already focused
- openSoftwareInputPanel();
+ forceFocus();
+ if (d->showInputPanelOnFocus) {
+ if (hasFocus() && hadFocus && !isReadOnly()) {
+ // re-open input panel on press if already focused
+ openSoftwareInputPanel();
+ }
+ } else { // show input panel on click
+ if (hasFocus() && !hadFocus) {
+ d->clickCausedFocus = true;
+ }
}
}
-
bool mark = event->modifiers() & Qt::ShiftModifier;
int cursor = d->xToPos(event->pos().x());
d->control->moveCursor(cursor, mark);
@@ -933,6 +960,16 @@ Handles the given mouse \a event.
void QDeclarativeTextInput::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeTextInput);
+ if (!d->showInputPanelOnFocus) { // input panel on click
+ if (d->focusOnPress && !isReadOnly() && boundingRect().contains(event->pos())) {
+ if (QGraphicsView * view = qobject_cast<QGraphicsView*>(qApp->focusWidget())) {
+ if (view->scene() && view->scene() == scene()) {
+ qt_widget_private(view)->handleSoftwareInputPanel(event->button(), d->clickCausedFocus);
+ }
+ }
+ }
+ }
+ d->clickCausedFocus = false;
d->control->processEvent(event);
if (!event->isAccepted())
QDeclarativePaintedItem::mouseReleaseEvent(event);
@@ -949,10 +986,9 @@ bool QDeclarativeTextInput::event(QEvent* ev)
case QEvent::GraphicsSceneMousePress:
case QEvent::GraphicsSceneMouseMove:
case QEvent::GraphicsSceneMouseRelease:
+ case QEvent::GraphicsSceneMouseDoubleClick:
break;
default:
- if (ev->type() == QEvent::GraphicsSceneMouseDoubleClick && !d->selectByMouse)
- break;
handled = d->control->processEvent(ev);
if (ev->type() == QEvent::InputMethod)
updateSize();
@@ -1203,26 +1239,37 @@ void QDeclarativeTextInput::moveCursorSelection(int position)
customizing when you want the input keyboard to be shown and hidden in
your application.
- By default input panels are shown when TextInput element gains focus and hidden
- when the focus is lost. You can disable the automatic behavior by setting the
- property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
- and closeSoftwareInputPanel() to implement the behavior you want.
+ By default the opening of input panels follows the platform style. On Symbian^1 and
+ Symbian^3 -based devices the panels are opened by clicking TextInput. On other platforms
+ the panels are automatically opened when TextInput element gains focus. Input panels are
+ always closed if no editor owns focus.
+
+ . You can disable the automatic behavior by setting the property \c focusOnPress to false
+ and use functions openSoftwareInputPanel() and closeSoftwareInputPanel() to implement
+ the behavior you want.
Only relevant on platforms, which provide virtual keyboards.
- \code
+ \qml
import Qt 4.7
TextInput {
id: textInput
text: "Hello world!"
- showInputPanelOnFocus: false
+ focusOnPress: false
MouseArea {
anchors.fill: parent
- onClicked: textInput.openSoftwareInputPanel()
+ onClicked: {
+ if (!textInput.focus) {
+ textInput.focus = true;
+ textInput.openSoftwareInputPanel();
+ } else {
+ textInput.focus = false;
+ }
+ }
+ onPressAndHold: textInput.closeSoftwareInputPanel();
}
- onFocusChanged: if (!focus) closeSoftwareInputPanel()
}
- \endcode
+ \endqml
*/
void QDeclarativeTextInput::openSoftwareInputPanel()
{
@@ -1243,26 +1290,37 @@ void QDeclarativeTextInput::openSoftwareInputPanel()
for customizing when you want the input keyboard to be shown and hidden in
your application.
- By default input panels are shown when TextInput element gains focus and hidden
- when the focus is lost. You can disable the automatic behavior by setting the
- property showInputPanelOnFocus to false and use functions openSoftwareInputPanel()
- and closeSoftwareInputPanel() to implement the behavior you want.
+ By default the opening of input panels follows the platform style. On Symbian^1 and
+ Symbian^3 -based devices the panels are opened by clicking TextInput. On other platforms
+ the panels are automatically opened when TextInput element gains focus. Input panels are
+ always closed if no editor owns focus.
+
+ . You can disable the automatic behavior by setting the property \c focusOnPress to false
+ and use functions openSoftwareInputPanel() and closeSoftwareInputPanel() to implement
+ the behavior you want.
Only relevant on platforms, which provide virtual keyboards.
- \code
+ \qml
import Qt 4.7
TextInput {
id: textInput
text: "Hello world!"
- showInputPanelOnFocus: false
+ focusOnPress: false
MouseArea {
anchors.fill: parent
- onClicked: textInput.openSoftwareInputPanel()
+ onClicked: {
+ if (!textInput.focus) {
+ textInput.focus = true;
+ textInput.openSoftwareInputPanel();
+ } else {
+ textInput.focus = false;
+ }
+ }
+ onPressAndHold: textInput.closeSoftwareInputPanel();
}
- onFocusChanged: if (!focus) closeSoftwareInputPanel()
}
- \endcode
+ \endqml
*/
void QDeclarativeTextInput::closeSoftwareInputPanel()
{
@@ -1277,54 +1335,22 @@ void QDeclarativeTextInput::closeSoftwareInputPanel()
}
}
-/*!
- \qmlproperty bool TextInput::showInputPanelOnFocus
- Whether input panels are automatically shown when TextInput element gains
- focus and hidden when focus is lost. By default this is set to true.
-
- Only relevant on platforms, which provide virtual keyboards.
-*/
-bool QDeclarativeTextInput::showInputPanelOnFocus() const
-{
- Q_D(const QDeclarativeTextInput);
- return d->showInputPanelOnFocus;
-}
-
-void QDeclarativeTextInput::setShowInputPanelOnFocus(bool showOnFocus)
-{
- Q_D(QDeclarativeTextInput);
- if (d->showInputPanelOnFocus == showOnFocus)
- return;
-
- d->showInputPanelOnFocus = showOnFocus;
-
- emit showInputPanelOnFocusChanged(d->showInputPanelOnFocus);
-}
-
void QDeclarativeTextInput::focusInEvent(QFocusEvent *event)
{
Q_D(const QDeclarativeTextInput);
- if (d->showInputPanelOnFocus && !isReadOnly() && event->reason() != Qt::ActiveWindowFocusReason) {
- openSoftwareInputPanel();
+ if (d->showInputPanelOnFocus) {
+ if (d->focusOnPress && !isReadOnly()) {
+ openSoftwareInputPanel();
+ }
}
QDeclarativePaintedItem::focusInEvent(event);
}
-void QDeclarativeTextInput::focusOutEvent(QFocusEvent *event)
-{
- Q_D(const QDeclarativeTextInput);
- if (d->showInputPanelOnFocus && !isReadOnly()) {
- closeSoftwareInputPanel();
- }
- QDeclarativePaintedItem::focusOutEvent(event);
-}
-
void QDeclarativeTextInputPrivate::init()
{
Q_Q(QDeclarativeTextInput);
control->setCursorWidth(1);
control->setPasswordCharacter(QLatin1Char('*'));
- control->setLayoutDirection(Qt::LeftToRight);
q->setSmooth(smooth);
q->setAcceptedMouseButtons(Qt::LeftButton);
q->setFlag(QGraphicsItem::ItemHasNoContents, false);
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
index 6bc6fc4..c539bd3 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
@@ -88,7 +88,6 @@ class Q_DECLARATIVE_EXPORT QDeclarativeTextInput : public QDeclarativePaintedIte
Q_PROPERTY(bool acceptableInput READ hasAcceptableInput NOTIFY acceptableInputChanged)
Q_PROPERTY(EchoMode echoMode READ echoMode WRITE setEchoMode NOTIFY echoModeChanged)
Q_PROPERTY(bool focusOnPress READ focusOnPress WRITE setFocusOnPress NOTIFY focusOnPressChanged)
- Q_PROPERTY(bool showInputPanelOnFocus READ showInputPanelOnFocus WRITE setShowInputPanelOnFocus NOTIFY showInputPanelOnFocusChanged)
Q_PROPERTY(QString passwordCharacter READ passwordCharacter WRITE setPasswordCharacter NOTIFY passwordCharacterChanged)
Q_PROPERTY(QString displayText READ displayText NOTIFY displayTextChanged)
Q_PROPERTY(bool autoScroll READ autoScroll WRITE setAutoScroll NOTIFY autoScrollChanged)
@@ -177,9 +176,6 @@ public:
bool focusOnPress() const;
void setFocusOnPress(bool);
- bool showInputPanelOnFocus() const;
- void setShowInputPanelOnFocus(bool showOnFocus);
-
bool autoScroll() const;
void setAutoScroll(bool);
@@ -216,7 +212,6 @@ Q_SIGNALS:
void focusOnPressChanged(bool focusOnPress);
void autoScrollChanged(bool autoScroll);
void selectByMouseChanged(bool selectByMouse);
- void showInputPanelOnFocusChanged(bool showOnFocus);
protected:
virtual void geometryChanged(const QRectF &newGeometry,
@@ -225,10 +220,10 @@ protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+ void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
void keyPressEvent(QKeyEvent* ev);
bool event(QEvent *e);
void focusInEvent(QFocusEvent *event);
- void focusOutEvent(QFocusEvent *event);
public Q_SLOTS:
void selectAll();
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
index f44d014..6865147 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
@@ -72,9 +72,15 @@ public:
color((QRgb)0), style(QDeclarativeText::Normal),
styleColor((QRgb)0), hAlign(QDeclarativeTextInput::AlignLeft),
hscroll(0), oldScroll(0), focused(false), focusOnPress(true),
- showInputPanelOnFocus(true), cursorVisible(false), autoScroll(true),
- selectByMouse(false)
+ showInputPanelOnFocus(true), clickCausedFocus(false), cursorVisible(false),
+ autoScroll(true), selectByMouse(false)
{
+#ifdef Q_OS_SYMBIAN
+ if (QSysInfo::symbianVersion() == QSysInfo::SV_SF_1 || QSysInfo::symbianVersion() == QSysInfo::SV_SF_3) {
+ showInputPanelOnFocus = false;
+ }
+#endif
+
}
~QDeclarativeTextInputPrivate()
@@ -116,6 +122,7 @@ public:
bool focused;
bool focusOnPress;
bool showInputPanelOnFocus;
+ bool clickCausedFocus;
bool cursorVisible;
bool autoScroll;
bool selectByMouse;
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
index c6ee46f..5092349 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
@@ -113,17 +113,19 @@ public:
\since 4.7
\brief The VisualItemModel allows items to be provided to a view.
- The children of the VisualItemModel are provided in a model which
- can be used in a view. Note that no delegate should be
- provided to a view since the VisualItemModel contains the
- visual delegate (items).
+ A VisualItemModel contains the visual items to be used in a view.
+ When a VisualItemModel is used in a view, the view does not require
+ a delegate since the VisualItemModel already contains the visual
+ delegate (items).
An item can determine its index within the
- model via the VisualItemModel.index attached property.
+ model via the \l{VisualItemModel::index}{index} attached property.
The example below places three colored rectangles in a ListView.
\code
- Item {
+ import Qt 4.7
+
+ Rectangle {
VisualItemModel {
id: itemModel
Rectangle { height: 30; width: 80; color: "red" }
@@ -137,12 +139,23 @@ public:
}
}
\endcode
+
+ \image visualitemmodel.png
+
+ \sa {declarative/modelviews/visualitemmodel}{VisualItemModel example}
*/
QDeclarativeVisualItemModel::QDeclarativeVisualItemModel(QObject *parent)
: QDeclarativeVisualModel(*(new QDeclarativeVisualItemModelPrivate), parent)
{
}
+/*!
+ \qmlattachedproperty int VisualItemModel::index
+ This attached property holds the index of this delegate's item within the model.
+
+ It is attached to each instance of the delegate.
+*/
+
QDeclarativeListProperty<QDeclarativeItem> QDeclarativeVisualItemModel::children()
{
Q_D(QDeclarativeVisualItemModel);
@@ -605,30 +618,15 @@ QDeclarativeVisualDataModelData *QDeclarativeVisualDataModelPrivate::data(QObjec
A VisualDataModel encapsulates a model and the delegate that will
be instantiated for items in the model.
- It is usually not necessary to create a VisualDataModel directly,
- since the QML views will create one internally.
+ It is usually not necessary to create VisualDataModel elements.
+ However, it can be useful for manipulating and accessing the \l modelIndex
+ when a QAbstractItemModel subclass is used as the
+ model. Also, VisualDataModel is used together with \l Package to
+ provide delegates to multiple views.
The example below illustrates using a VisualDataModel with a ListView.
- \code
- VisualDataModel {
- id: visualModel
- model: myModel
- delegate: Component {
- Rectangle {
- height: 25
- width: 100
- Text { text: "Name:" + name}
- }
- }
- }
- ListView {
- width: 100
- height: 100
- anchors.fill: parent
- model: visualModel
- }
- \endcode
+ \snippet doc/src/snippets/declarative/visualdatamodel.qml 0
*/
QDeclarativeVisualDataModel::QDeclarativeVisualDataModel()
@@ -803,56 +801,22 @@ void QDeclarativeVisualDataModel::setDelegate(QDeclarativeComponent *delegate)
/*!
\qmlproperty QModelIndex VisualDataModel::rootIndex
- QAbstractItemModel provides a heirachical tree of data, whereas
+ QAbstractItemModel provides a hierarchical tree of data, whereas
QML only operates on list data. \c rootIndex allows the children of
any node in a QAbstractItemModel to be provided by this model.
This property only affects models of type QAbstractItemModel.
- \code
- // main.cpp
+ For example, here is a simple interactive file system browser.
+ When a directory name is clicked, the view's \c rootIndex is set to the
+ QModelIndex node of the clicked directory, thus updating the view to show
+ the new directory's contents.
- int main(int argc, char ** argv)
- {
- QApplication app(argc, argv);
-
- QDeclarativeView view;
-
- QDirModel model;
- view.rootContext()->setContextProperty("myModel", &model);
-
- view.setSource(QUrl("qrc:view.qml"));
- view.show();
-
- return app.exec();
- }
-
- #include "main.moc"
- \endcode
-
- \code
- // view.qml
- import Qt 4.7
-
- ListView {
- id: view
- width: 200
- height: 200
- model: VisualDataModel {
- model: myModel
- delegate: Component {
- Rectangle {
- height: 25; width: 200
- Text { text: filePath }
- MouseArea {
- anchors.fill: parent;
- onClicked: if (hasModelChildren) view.model.rootIndex = view.model.modelIndex(index)
- }
- }
- }
- }
- }
- \endcode
+ \c main.cpp:
+ \snippet doc/src/snippets/declarative/visualdatamodel_rootindex/main.cpp 0
+
+ \c view.qml:
+ \snippet doc/src/snippets/declarative/visualdatamodel_rootindex/view.qml 0
\sa modelIndex(), parentModelIndex()
*/
@@ -884,7 +848,7 @@ void QDeclarativeVisualDataModel::setRootIndex(const QVariant &root)
/*!
\qmlmethod QModelIndex VisualDataModel::modelIndex(int index)
- QAbstractItemModel provides a heirachical tree of data, whereas
+ QAbstractItemModel provides a hierarchical tree of data, whereas
QML only operates on list data. This function assists in using
tree models in QML.
@@ -904,7 +868,7 @@ QVariant QDeclarativeVisualDataModel::modelIndex(int idx) const
/*!
\qmlmethod QModelIndex VisualDataModel::parentModelIndex()
- QAbstractItemModel provides a heirachical tree of data, whereas
+ QAbstractItemModel provides a hierarchical tree of data, whereas
QML only operates on list data. This function assists in using
tree models in QML.
@@ -998,10 +962,10 @@ QDeclarativeVisualDataModel::ReleaseFlags QDeclarativeVisualDataModel::release(Q
The \a parts property selects a VisualDataModel which creates
delegates from the part named. This is used in conjunction with
- the Package element.
+ the \l Package element.
For example, the code below selects a model which creates
- delegates named \e list from a Package:
+ delegates named \e list from a \l Package:
\code
VisualDataModel {
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h b/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h
index 0bdbbcf..079c9e6 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h
@@ -54,11 +54,6 @@ Q_DECLARE_METATYPE(QModelIndex)
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-/*****************************************************************************
- *****************************************************************************
- XXX Experimental
- *****************************************************************************
-*****************************************************************************/
class QDeclarativeItem;
class QDeclarativeComponent;
diff --git a/src/declarative/qml/parser/qdeclarativejslexer.cpp b/src/declarative/qml/parser/qdeclarativejslexer.cpp
index 975ad4c..fcaaece 100644
--- a/src/declarative/qml/parser/qdeclarativejslexer.cpp
+++ b/src/declarative/qml/parser/qdeclarativejslexer.cpp
@@ -57,7 +57,7 @@
#include <string.h>
QT_BEGIN_NAMESPACE
-Q_DECL_IMPORT extern double qstrtod(const char *s00, char const **se, bool *ok);
+Q_CORE_EXPORT double qstrtod(const char *s00, char const **se, bool *ok);
QT_END_NAMESPACE
QT_QML_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarative.h b/src/declarative/qml/qdeclarative.h
index d75f0a8..53ff51c 100644
--- a/src/declarative/qml/qdeclarative.h
+++ b/src/declarative/qml/qdeclarative.h
@@ -67,7 +67,7 @@ QT_BEGIN_HEADER
QML_DECLARE_TYPE_HASMETATYPE(INTERFACE)
enum { /* TYPEINFO flags */
- QML_HAS_ATTACHED_PROPERTIES = 0x01,
+ QML_HAS_ATTACHED_PROPERTIES = 0x01
};
#define QML_DECLARE_TYPEINFO(TYPE, FLAGS) \
diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp
index 9847079..55ee783 100644
--- a/src/declarative/qml/qdeclarativecomponent.cpp
+++ b/src/declarative/qml/qdeclarativecomponent.cpp
@@ -78,7 +78,7 @@ class QByteArray;
\since 4.7
\brief The Component element encapsulates a QML component description.
- Components are reusable, encapsulated Qml element with a well-defined interface.
+ Components are reusable, encapsulated QML elements with well-defined interfaces.
They are often defined in \l {qdeclarativedocuments.html}{Component Files}.
The \e Component element allows defining components within a QML file.
@@ -547,16 +547,18 @@ QDeclarativeComponent::QDeclarativeComponent(QDeclarativeComponentPrivate &dd, Q
/*!
\qmlmethod object Component::createObject(parent)
- Returns an object instance from this component, or null if object creation fails.
+
+ Creates and returns an object instance of this component that will have the given
+ \a parent. Returns null if object creation fails.
The object will be created in the same context as the one in which the component
was created. This function will always return null when called on components
which were not created in QML.
- Note that if the returned object is to be displayed, its \c parent must be set to
- an existing item in a scene, or else the object will not be visible. The parent
- argument is required to help you avoid this, you must explicitly pass in null if
- you wish to create an object without setting a parent.
+ If you wish to create an object without setting a parent, specify \c null for
+ the \a parent value. Note that if the returned object is to be displayed, you
+ must provide a valid \a parent value or set the returned object's \l{Item::parent}{parent}
+ property, or else the object will not be visible.
*/
/*!
diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp
index 6a13f15..2221d78 100644
--- a/src/declarative/qml/qdeclarativecontext.cpp
+++ b/src/declarative/qml/qdeclarativecontext.cpp
@@ -116,7 +116,7 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
All properties added explicitly by QDeclarativeContext::setContextProperty() take
precedence over the context object's properties.
- Contexts form a hierarchy. The root of this heirarchy is the QDeclarativeEngine's
+ Contexts form a hierarchy. The root of this hierarchy is the QDeclarativeEngine's
\l {QDeclarativeEngine::rootContext()}{root context}. A component instance can
access the data in its own context, as well as all its ancestor contexts. Data
can be made available to all instances by modifying the
diff --git a/src/declarative/qml/qdeclarativecontext_p.h b/src/declarative/qml/qdeclarativecontext_p.h
index 6b6cd0a..1f5aaf1 100644
--- a/src/declarative/qml/qdeclarativecontext_p.h
+++ b/src/declarative/qml/qdeclarativecontext_p.h
@@ -108,7 +108,7 @@ public:
class QDeclarativeComponentAttached;
class QDeclarativeGuardedContextData;
-class QDeclarativeContextData
+class Q_AUTOTEST_EXPORT QDeclarativeContextData
{
public:
QDeclarativeContextData();
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index 39b0802..0715624 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -191,7 +191,7 @@ when the property has one of the following types:
\o \c vector3d - use \l{Qt::vector3d()}{Qt.vector3d()}
\endlist
-There are also string based constructors for these types, see \l{qdeclarativebasictypes.html}{QML Basic Types}.
+There are also string based constructors for these types. See \l{qdeclarativebasictypes.html}{QML Basic Types} for more information.
\section1 Date/Time Formatters
@@ -1054,8 +1054,9 @@ or \c null if there was an error in creating the component.
Call \l {Component::createObject()}{Component.createObject()} on the returned
component to create an object instance of the component.
-Here is an example. Remember that QML files that might be loaded
-over the network cannot be expected to be ready immediately.
+Here is an example. Notice it checks whether the component \l{Component::status}{status} is
+\c Component.Ready before calling \l {Component::createObject()}{createObject()}
+in case the QML file is loaded over a network and thus is not ready immediately.
\snippet doc/src/snippets/declarative/componentCreation.js 0
\codeline
@@ -1095,12 +1096,12 @@ QScriptValue QDeclarativeEnginePrivate::createComponent(QScriptContext *ctxt, QS
/*!
\qmlmethod object Qt::createQmlObject(string qml, object parent, string filepath)
-Returns a new object created from the given \a string of QML with the specified \a parent,
+Returns a new object created from the given \a string of QML which will have the specified \a parent,
or \c null if there was an error in creating the object.
If \a filepath is specified, it will be used for error reporting for the created object.
-Example (where \c targetItem is the id of an existing QML item):
+Example (where \c parentItem is the id of an existing QML item):
\snippet doc/src/snippets/declarative/createQmlObject.qml 0
diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp
index c658a31..a2e3831 100644
--- a/src/declarative/qml/qdeclarativeimport.cpp
+++ b/src/declarative/qml/qdeclarativeimport.cpp
@@ -823,7 +823,7 @@ void QDeclarativeImportDatabase::addPluginPath(const QString& path)
qDebug() << "QDeclarativeImportDatabase::addPluginPath" << path;
QUrl url = QUrl(path);
- if (url.isRelative() || url.scheme() == QString::fromLocal8Bit("file")) {
+ if (url.isRelative() || url.scheme() == QLatin1String("file")) {
QDir dir = QDir(path);
filePluginPath.prepend(dir.canonicalPath());
} else {
@@ -842,7 +842,7 @@ void QDeclarativeImportDatabase::addImportPath(const QString& path)
QUrl url = QUrl(path);
QString cPath;
- if (url.isRelative() || url.scheme() == QString::fromLocal8Bit("file")) {
+ if (url.isRelative() || url.scheme() == QLatin1String("file")) {
QDir dir = QDir(path);
cPath = dir.canonicalPath();
} else {
diff --git a/src/declarative/qml/qdeclarativeinstruction_p.h b/src/declarative/qml/qdeclarativeinstruction_p.h
index dc5f2f8..4627eb3 100644
--- a/src/declarative/qml/qdeclarativeinstruction_p.h
+++ b/src/declarative/qml/qdeclarativeinstruction_p.h
@@ -158,7 +158,7 @@ public:
//
// Deferred creation
//
- Defer, /* defer */
+ Defer /* defer */
};
QDeclarativeInstruction()
: line(0) {}
diff --git a/src/declarative/qml/qdeclarativepropertycache_p.h b/src/declarative/qml/qdeclarativepropertycache_p.h
index b01e5cc..72cfeba 100644
--- a/src/declarative/qml/qdeclarativepropertycache_p.h
+++ b/src/declarative/qml/qdeclarativepropertycache_p.h
@@ -65,7 +65,7 @@ QT_BEGIN_NAMESPACE
class QDeclarativeEngine;
class QMetaProperty;
-class QDeclarativePropertyCache : public QDeclarativeRefCount, public QDeclarativeCleanup
+class Q_AUTOTEST_EXPORT QDeclarativePropertyCache : public QDeclarativeRefCount, public QDeclarativeCleanup
{
public:
QDeclarativePropertyCache(QDeclarativeEngine *);
diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp
index dbc25bb..c17ec95 100644
--- a/src/declarative/qml/qdeclarativevaluetype.cpp
+++ b/src/declarative/qml/qdeclarativevaluetype.cpp
@@ -47,6 +47,8 @@
QT_BEGIN_NAMESPACE
+Q_DECL_IMPORT extern int qt_defaultDpi();
+
template<typename T>
int qmlRegisterValueTypeEnums(const char *qmlName)
{
@@ -909,6 +911,11 @@ void QDeclarativeFontValueType::setStrikeout(bool b)
qreal QDeclarativeFontValueType::pointSize() const
{
+ if (font.pointSizeF() == -1) {
+ if (dpi.isNull)
+ dpi = qt_defaultDpi();
+ return font.pixelSize() * qreal(72.) / qreal(dpi);
+ }
return font.pointSizeF();
}
@@ -929,6 +936,11 @@ void QDeclarativeFontValueType::setPointSize(qreal size)
int QDeclarativeFontValueType::pixelSize() const
{
+ if (font.pixelSize() == -1) {
+ if (dpi.isNull)
+ dpi = qt_defaultDpi();
+ return (font.pointSizeF() * dpi) / qreal(72.);
+ }
return font.pixelSize();
}
diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h
index 476c73d..4b1bbd6 100644
--- a/src/declarative/qml/qdeclarativevaluetype_p.h
+++ b/src/declarative/qml/qdeclarativevaluetype_p.h
@@ -55,6 +55,7 @@
#include "qdeclarativeproperty.h"
#include "private/qdeclarativeproperty_p.h"
+#include "private/qdeclarativenullablevalue_p_p.h"
#include <QtCore/qobject.h>
#include <QtCore/qrect.h>
@@ -446,7 +447,7 @@ public:
InBounce = QEasingCurve::InBounce, OutBounce = QEasingCurve::OutBounce,
InOutBounce = QEasingCurve::InOutBounce, OutInBounce = QEasingCurve::OutInBounce,
InCurve = QEasingCurve::InCurve, OutCurve = QEasingCurve::OutCurve,
- SineCurve = QEasingCurve::SineCurve, CosineCurve = QEasingCurve::CosineCurve,
+ SineCurve = QEasingCurve::SineCurve, CosineCurve = QEasingCurve::CosineCurve
};
QDeclarativeEasingValueType(QObject *parent = 0);
@@ -547,6 +548,7 @@ private:
QFont font;
bool pixelSizeSet;
bool pointSizeSet;
+ mutable QDeclarativeNullableValue<int> dpi;
};
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index 2ca030e..aec84a6 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -521,9 +521,9 @@ void QDeclarativeWorkerScriptEngine::run()
that the main GUI thread is not blocked.
Messages can be passed between the new thread and the parent thread
- using sendMessage() and the onMessage() handler.
+ using \l sendMessage() and the \l {WorkerScript::onMessage}{onMessage()} handler.
- Here is an example:
+ An example:
\snippet doc/src/snippets/declarative/workerscript.qml 0
@@ -541,6 +541,9 @@ void QDeclarativeWorkerScriptEngine::run()
called, triggering the \tt WorkerScript.onMessage() handler in
\tt script.js. This in turn sends a reply message that is then received
by the \tt onMessage() handler of \tt myWorker.
+
+ \sa {declarative/threading/workerscript}{WorkerScript example},
+ {declarative/threading/threadedlistmodel}{Threaded ListModel example}
*/
QDeclarativeWorkerScript::QDeclarativeWorkerScript(QObject *parent)
: QObject(parent), m_engine(0), m_scriptId(-1), m_componentComplete(true)
@@ -555,7 +558,7 @@ QDeclarativeWorkerScript::~QDeclarativeWorkerScript()
/*!
\qmlproperty url WorkerScript::source
- This holds the url of the javascript file that implements the
+ This holds the url of the JavaScript file that implements the
\tt WorkerScript.onMessage() handler for threaded operations.
*/
QUrl QDeclarativeWorkerScript::source() const
@@ -576,7 +579,7 @@ void QDeclarativeWorkerScript::setSource(const QUrl &source)
emit sourceChanged();
}
-/*
+/*!
\qmlmethod WorkerScript::sendMessage(jsobject message)
Sends the given \a message to a worker script handler in another
diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp
index de1c0cb..25cf133 100644
--- a/src/declarative/util/qdeclarativeanimation.cpp
+++ b/src/declarative/util/qdeclarativeanimation.cpp
@@ -557,6 +557,8 @@ void QDeclarativeAbstractAnimation::timelineComplete()
NumberAnimation { ... duration: 200 }
}
\endcode
+
+ \sa {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
/*!
\internal
@@ -627,6 +629,8 @@ QAbstractAnimation *QDeclarativePauseAnimation::qtAnimation()
When used in a transition, ColorAnimation will by default animate
all properties of type color that are changing. If a property or properties
are explicitly set for the animation, then those will be used instead.
+
+ \sa {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
/*!
\internal
@@ -1082,11 +1086,13 @@ void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions,
\inherits PropertyAnimation
\brief The NumberAnimation element allows you to animate changes in properties of type qreal.
- Animate a set of properties over 200ms, from their values in the start state to
+ For example, to animate a set of properties over 200ms, from their values in the start state to
their values in the end state of the transition:
\code
NumberAnimation { properties: "x,y,scale"; duration: 200 }
\endcode
+
+ \sa {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
/*!
@@ -1156,6 +1162,8 @@ void QDeclarativeNumberAnimation::setTo(qreal t)
\since 4.7
\inherits PropertyAnimation
\brief The Vector3dAnimation element allows you to animate changes in properties of type QVector3d.
+
+ \sa {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
/*!
@@ -1224,7 +1232,8 @@ void QDeclarativeVector3dAnimation::setTo(QVector3D t)
When used in a transition RotationAnimation will rotate all
properties named "rotation" or "angle". You can override this by providing
- your own properties via \c properties or \c property.
+ your own properties via \l {PropertyAnimation::properties}{properties} or
+ \l {PropertyAnimation::property}{property}.
In the following example we use RotationAnimation to animate the rotation
between states via the shortest path.
@@ -1238,6 +1247,8 @@ void QDeclarativeVector3dAnimation::setTo(QVector3D t)
RotationAnimation { direction: RotationAnimation.Shortest }
}
\endqml
+
+ \sa {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
/*!
@@ -1446,7 +1457,7 @@ QDeclarativeListProperty<QDeclarativeAbstractAnimation> QDeclarativeAnimationGro
}
\endcode
- \sa ParallelAnimation
+ \sa ParallelAnimation, {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
QDeclarativeSequentialAnimation::QDeclarativeSequentialAnimation(QObject *parent) :
@@ -1508,7 +1519,7 @@ void QDeclarativeSequentialAnimation::transition(QDeclarativeStateActions &actio
}
\endcode
- \sa SequentialAnimation
+ \sa SequentialAnimation, {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
/*!
\internal
@@ -1657,6 +1668,8 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int
Depending on how the animation is used, the set of properties normally used will be
different. For more information see the individual property documentation, as well
as the \l{QML Animation} introduction.
+
+ \sa {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
QDeclarativePropertyAnimation::QDeclarativePropertyAnimation(QObject *parent)
@@ -1761,7 +1774,7 @@ void QDeclarativePropertyAnimation::setTo(const QVariant &t)
To specify an easing curve you need to specify at least the type. For some curves you can also specify
amplitude, period and/or overshoot (more details provided after the table). The default easing curve is
- Linear.
+ \c Easing.Linear.
\qml
PropertyAnimation { properties: "y"; easing.type: Easing.InOutElastic; easing.amplitude: 2.0; easing.period: 1.5 }
@@ -1938,15 +1951,15 @@ void QDeclarativePropertyAnimation::setTo(const QVariant &t)
\o \inlineimage qeasingcurve-outinbounce.png
\endtable
- easing.amplitude is only applicable for bounce and elastic curves (curves of type
- Easing.InBounce, Easing.OutBounce, Easing.InOutBounce, Easing.OutInBounce, Easing.InElastic,
- Easing.OutElastic, Easing.InOutElastic or Easing.OutInElastic).
+ \c easing.amplitude is only applicable for bounce and elastic curves (curves of type
+ \c Easing.InBounce, \c Easing.OutBounce, \c Easing.InOutBounce, \c Easing.OutInBounce, \c Easing.InElastic,
+ \c Easing.OutElastic, \c Easing.InOutElastic or \c Easing.OutInElastic).
- easing.overshoot is only applicable if type is: Easing.InBack, Easing.OutBack,
- Easing.InOutBack or Easing.OutInBack.
+ \c easing.overshoot is only applicable if \c easing.type is: \c Easing.InBack, \c Easing.OutBack,
+ \c Easing.InOutBack or \c Easing.OutInBack.
- easing.period is only applicable if type is: Easing.InElastic, Easing.OutElastic,
- Easing.InOutElastic or Easing.OutInElastic.
+ \c easing.period is only applicable if easing.type is: \c Easing.InElastic, \c Easing.OutElastic,
+ \c Easing.InOutElastic or \c Easing.OutInElastic.
See the \l {declarative/animation/easing}{easing} example for a demonstration of
the different easing settings.
@@ -2032,8 +2045,9 @@ void QDeclarativePropertyAnimation::setProperties(const QString &prop)
The singular forms are slightly optimized, so if you do have only a single target/property
to animate you should try to use them.
- In many cases these properties do not need to be explicitly specified -- they can be
- inferred from the animation framework.
+ In many cases these properties do not need to be explicitly specified, as they can be
+ inferred from the animation framework:
+
\table 80%
\row
\o Value Source / Behavior
@@ -2119,52 +2133,39 @@ QAbstractAnimation *QDeclarativePropertyAnimation::qtAnimation()
return d->va;
}
-struct PropertyUpdater : public QDeclarativeBulkValueUpdater
+void QDeclarativeAnimationPropertyUpdater::setValue(qreal v)
{
- QDeclarativeStateActions actions;
- int interpolatorType; //for Number/ColorAnimation
- int prevInterpolatorType; //for generic
- QVariantAnimation::Interpolator interpolator;
- bool reverse;
- bool fromSourced;
- bool fromDefined;
- bool *wasDeleted;
- PropertyUpdater() : prevInterpolatorType(0), wasDeleted(0) {}
- ~PropertyUpdater() { if (wasDeleted) *wasDeleted = true; }
- void setValue(qreal v)
- {
- bool deleted = false;
- wasDeleted = &deleted;
- if (reverse) //QVariantAnimation sends us 1->0 when reversed, but we are expecting 0->1
- v = 1 - v;
- for (int ii = 0; ii < actions.count(); ++ii) {
- QDeclarativeAction &action = actions[ii];
-
- if (v == 1.)
- QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
- else {
- if (!fromSourced && !fromDefined) {
- action.fromValue = action.property.read();
- if (interpolatorType)
- QDeclarativePropertyAnimationPrivate::convertVariant(action.fromValue, interpolatorType);
- }
- if (!interpolatorType) {
- int propType = action.property.propertyType();
- if (!prevInterpolatorType || prevInterpolatorType != propType) {
- prevInterpolatorType = propType;
- interpolator = QVariantAnimationPrivate::getInterpolator(prevInterpolatorType);
- }
+ bool deleted = false;
+ wasDeleted = &deleted;
+ if (reverse) //QVariantAnimation sends us 1->0 when reversed, but we are expecting 0->1
+ v = 1 - v;
+ for (int ii = 0; ii < actions.count(); ++ii) {
+ QDeclarativeAction &action = actions[ii];
+
+ if (v == 1.)
+ QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
+ else {
+ if (!fromSourced && !fromDefined) {
+ action.fromValue = action.property.read();
+ if (interpolatorType)
+ QDeclarativePropertyAnimationPrivate::convertVariant(action.fromValue, interpolatorType);
+ }
+ if (!interpolatorType) {
+ int propType = action.property.propertyType();
+ if (!prevInterpolatorType || prevInterpolatorType != propType) {
+ prevInterpolatorType = propType;
+ interpolator = QVariantAnimationPrivate::getInterpolator(prevInterpolatorType);
}
- if (interpolator)
- QDeclarativePropertyPrivate::write(action.property, interpolator(action.fromValue.constData(), action.toValue.constData(), v), QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
}
- if (deleted)
- return;
+ if (interpolator)
+ QDeclarativePropertyPrivate::write(action.property, interpolator(action.fromValue.constData(), action.toValue.constData(), v), QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
}
- wasDeleted = 0;
- fromSourced = true;
+ if (deleted)
+ return;
}
-};
+ wasDeleted = 0;
+ fromSourced = true;
+}
void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
@@ -2194,7 +2195,7 @@ void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions
props << d->defaultProperties.split(QLatin1Char(','));
}
- PropertyUpdater *data = new PropertyUpdater;
+ QDeclarativeAnimationPropertyUpdater *data = new QDeclarativeAnimationPropertyUpdater;
data->interpolatorType = d->interpolatorType;
data->interpolator = d->interpolator;
data->reverse = direction == Backward ? true : false;
@@ -2319,6 +2320,8 @@ void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions
When used in a transition, ParentAnimation will by default animate
all ParentChanges.
+
+ \sa {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
/*!
@@ -2771,7 +2774,7 @@ void QDeclarativeAnchorAnimation::transition(QDeclarativeStateActions &actions,
{
Q_UNUSED(modified);
Q_D(QDeclarativeAnchorAnimation);
- PropertyUpdater *data = new PropertyUpdater;
+ QDeclarativeAnimationPropertyUpdater *data = new QDeclarativeAnimationPropertyUpdater;
data->interpolatorType = QMetaType::QReal;
data->interpolator = d->interpolator;
diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h
index e7cd8a8..3f8fbdd 100644
--- a/src/declarative/util/qdeclarativeanimation_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p.h
@@ -384,7 +384,7 @@ Q_SIGNALS:
};
class QDeclarativeAnimationGroupPrivate;
-class QDeclarativeAnimationGroup : public QDeclarativeAbstractAnimation
+class Q_AUTOTEST_EXPORT QDeclarativeAnimationGroup : public QDeclarativeAbstractAnimation
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeAnimationGroup)
diff --git a/src/declarative/util/qdeclarativeanimation_p_p.h b/src/declarative/util/qdeclarativeanimation_p_p.h
index 3b0f52e..b6d6bbb 100644
--- a/src/declarative/util/qdeclarativeanimation_p_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p_p.h
@@ -96,7 +96,7 @@ private:
};
//performs an action of type QAbstractAnimationAction
-class QActionAnimation : public QAbstractAnimation
+class Q_AUTOTEST_EXPORT QActionAnimation : public QAbstractAnimation
{
Q_OBJECT
public:
@@ -143,7 +143,7 @@ public:
};
//animates QDeclarativeBulkValueUpdater (assumes start and end values will be reals or compatible)
-class QDeclarativeBulkValueAnimator : public QVariantAnimation
+class Q_AUTOTEST_EXPORT QDeclarativeBulkValueAnimator : public QVariantAnimation
{
Q_OBJECT
public:
@@ -378,6 +378,22 @@ public:
QList<QDeclarativeItem*> targets;
};
+class Q_AUTOTEST_EXPORT QDeclarativeAnimationPropertyUpdater : public QDeclarativeBulkValueUpdater
+{
+public:
+ QDeclarativeStateActions actions;
+ int interpolatorType; //for Number/ColorAnimation
+ int prevInterpolatorType; //for generic
+ QVariantAnimation::Interpolator interpolator;
+ bool reverse;
+ bool fromSourced;
+ bool fromDefined;
+ bool *wasDeleted;
+ QDeclarativeAnimationPropertyUpdater() : prevInterpolatorType(0), wasDeleted(0) {}
+ ~QDeclarativeAnimationPropertyUpdater() { if (wasDeleted) *wasDeleted = true; }
+ void setValue(qreal v);
+};
+
QT_END_NAMESPACE
#endif // QDECLARATIVEANIMATION_P_H
diff --git a/src/declarative/util/qdeclarativeconnections.cpp b/src/declarative/util/qdeclarativeconnections.cpp
index 808d196..b364821 100644
--- a/src/declarative/util/qdeclarativeconnections.cpp
+++ b/src/declarative/util/qdeclarativeconnections.cpp
@@ -72,7 +72,9 @@ public:
/*!
\qmlclass Connections QDeclarativeConnections
\since 4.7
- \brief A Connections object describes generalized connections to signals.
+ \brief A Connections element describes generalized connections to signals.
+
+ A Connections object creates a connection to a QML signal.
When connecting to signals in QML, the usual way is to create an
"on<Signal>" handler that reacts when a signal is received, like this:
@@ -83,16 +85,16 @@ public:
}
\endqml
- However, in some cases, it is not possible to connect to a signal in this
- way, such as:
+ However, it is not possible to connect to a signal in this way in some
+ cases, such as when:
\list
- \i multiple connections to the same signal
- \i connections outside the scope of the signal sender
- \i connections to targets not defined in QML
+ \i Multiple connections to the same signal are required
+ \i Creating connections outside the scope of the signal sender
+ \i Connecting to targets not defined in QML
\endlist
- When any of these are needed, the Connections object can be used instead.
+ When any of these are needed, the Connections element can be used instead.
For example, the above code can be changed to use a Connections object,
like this:
@@ -105,7 +107,7 @@ public:
}
\endqml
- More generally, the Connections object can be a child of some other object than
+ More generally, the Connections object can be a child of some object other than
the sender of the signal:
\qml
@@ -141,7 +143,7 @@ QDeclarativeConnections::~QDeclarativeConnections()
\qmlproperty Object Connections::target
This property holds the object that sends the signal.
- If not set at all, the target defaults to be the parent of the Connections.
+ If this property is not set, the \c target defaults to the parent of the Connection.
If set to null, no connection is made and any signal handlers are ignored
until the target is not null.
@@ -175,12 +177,11 @@ void QDeclarativeConnections::setTarget(QObject *obj)
/*!
\qmlproperty bool Connections::ignoreUnknownSignals
- Normally, you will get a runtime error if you try to connect
- to signals on an object which the object does not have.
+ Normally, a connection to a non-existent signal produces runtime errors.
- By setting this flag to true, such errors are ignored. This is
- useful if you intend to connect to different types of object, handling
- a different set of signals for each.
+ If this property is set to \c true, such errors are ignored.
+ This is useful if you intend to connect to different types of objects, handling
+ a different set of signals for each object.
*/
bool QDeclarativeConnections::ignoreUnknownSignals() const
{
diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp
index c73f827..83bdb17 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -79,16 +79,27 @@ public:
/*!
\qmlclass FontLoader QDeclarativeFontLoader
\since 4.7
- \brief This item allows using fonts by name or url.
+ \brief The FontLoader element allows fonts to be loaded by name or URL.
- Example:
+ The FontLoader element is used to load fonts by name or URL.
+
+ The \l status indicates when the font has been loaded, which is useful
+ for fonts loaded from remote sources.
+
+ For example:
\qml
- FontLoader { id: fixedFont; name: "Courier" }
- FontLoader { id: webFont; source: "http://www.mysite.com/myfont.ttf" }
+ import Qt 4.7
- Text { text: "Fixed-size font"; font.family: fixedFont.name }
- Text { text: "Fancy font"; font.family: webFont.name }
+ Column {
+ FontLoader { id: fixedFont; name: "Courier" }
+ FontLoader { id: webFont; source: "http://www.mysite.com/myfont.ttf" }
+
+ Text { text: "Fixed-size font"; font.family: fixedFont.name }
+ Text { text: "Fancy font"; font.family: webFont.name }
+ }
\endqml
+
+ \sa {declarative/text/fonts}{Fonts example}
*/
QDeclarativeFontLoader::QDeclarativeFontLoader(QObject *parent)
: QObject(*(new QDeclarativeFontLoaderPrivate), parent)
@@ -183,15 +194,26 @@ void QDeclarativeFontLoader::setName(const QString &name)
\o FontLoader.Error - an error occurred while loading the font
\endlist
- Note that a change in the status property does not cause anything to happen
- (although it reflects what has happened to the font loader internally). If you wish
- to react to the change in status you need to do it yourself, for example in one
- of the following ways:
- \list
- \o Create a state, so that a state change occurs, e.g. State{name: 'loaded'; when: loader.status = FontLoader.Ready;}
- \o Do something inside the onStatusChanged signal handler, e.g. FontLoader{id: loader; onStatusChanged: if(loader.status == FontLoader.Ready) console.log('Loaded');}
- \o Bind to the status variable somewhere, e.g. Text{text: if(loader.status!=FontLoader.Ready){'Not Loaded';}else{'Loaded';}}
- \endlist
+ Use this status to provide an update or respond to the status change in some way.
+ For example, you could:
+
+ \e {Trigger a state change:}
+ \qml
+ State { name: 'loaded'; when: loader.status = FontLoader.Ready }
+ \endqml
+
+ \e {Implement an \c onStatusChanged signal handler:}
+ \qml
+ FontLoader {
+ id: loader
+ onStatusChanged: if (loader.status == FontLoader.Ready) console.log('Loaded')
+ }
+ \endqml
+
+ \e {Bind to the status value:}
+ \qml
+ Text { text: loader.status != FontLoader.Ready ? 'Not Loaded' : 'Loaded' }
+ \endqml
*/
QDeclarativeFontLoader::Status QDeclarativeFontLoader::status() const
{
diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp
index 7518eb7..ff83227 100644
--- a/src/declarative/util/qdeclarativelistmodel.cpp
+++ b/src/declarative/util/qdeclarativelistmodel.cpp
@@ -76,125 +76,41 @@ QDeclarativeListModelParser::ListInstruction *QDeclarativeListModelParser::ListM
For example:
- \code
- ListModel {
- id: fruitModel
- ListElement {
- name: "Apple"
- cost: 2.45
- }
- ListElement {
- name: "Orange"
- cost: 3.25
- }
- ListElement {
- name: "Banana"
- cost: 1.95
- }
- }
- \endcode
+ \snippet doc/src/snippets/declarative/listmodel.qml 0
- Roles (properties) must begin with a lower-case letter.The above example defines a
+ Roles (properties) must begin with a lower-case letter. The above example defines a
ListModel containing three elements, with the roles "name" and "cost".
Values must be simple constants - either strings (quoted), bools (true, false), numbers,
or enum values (like Text.AlignHCenter).
The defined model can be used in views such as ListView:
- \code
- Component {
- id: fruitDelegate
- Item {
- width: 200; height: 50
- Text { text: name }
- Text { text: '$'+cost; anchors.right: parent.right }
- }
- }
- ListView {
- model: fruitModel
- delegate: fruitDelegate
- anchors.fill: parent
- }
- \endcode
+ \snippet doc/src/snippets/declarative/listmodel-simple.qml 0
+ \dots 8
+ \snippet doc/src/snippets/declarative/listmodel-simple.qml 1
+ \image listmodel.png
It is possible for roles to contain list data. In the example below we create a list of fruit attributes:
- \code
- ListModel {
- id: fruitModel
- ListElement {
- name: "Apple"
- cost: 2.45
- attributes: [
- ListElement { description: "Core" },
- ListElement { description: "Deciduous" }
- ]
- }
- ListElement {
- name: "Orange"
- cost: 3.25
- attributes: [
- ListElement { description: "Citrus" }
- ]
- }
- ListElement {
- name: "Banana"
- cost: 1.95
- attributes: [
- ListElement { description: "Tropical" },
- ListElement { description: "Seedless" }
- ]
- }
- }
- \endcode
+ \snippet doc/src/snippets/declarative/listmodel-nested.qml model
+
+ The delegate below displays all the fruit attributes:
+
+ \snippet doc/src/snippets/declarative/listmodel-nested.qml delegate
+ \image listmodel-nested.png
- The delegate below will list all the fruit attributes:
- \code
- Component {
- id: fruitDelegate
- Item {
- width: 200; height: 50
- Text { id: name; text: name }
- Text { text: '$'+cost; anchors.right: parent.right }
- Row {
- anchors.top: name.bottom
- spacing: 5
- Text { text: "Attributes:" }
- Repeater {
- model: attributes
- Component { Text { text: description } }
- }
- }
- }
- }
- \endcode
\section2 Modifying list models
The content of a ListModel may be created and modified using the clear(),
- append(), and set() methods. For example:
-
- \code
- Component {
- id: fruitDelegate
- Item {
- width: 200; height: 50
- Text { text: name }
- Text { text: '$'+cost; anchors.right: parent.right }
-
- // Double the price when clicked.
- MouseArea {
- anchors.fill: parent
- onClicked: fruitModel.set(index, "cost", cost*2)
- }
- }
- }
- \endcode
+ append(), set() and setProperty() methods. For example:
+
+ \snippet doc/src/snippets/declarative/listmodel-modify.qml delegate
When creating content dynamically, note that the set of available properties cannot be changed
- except by first clearing the model - whatever properties are first added are then the
- only permitted properties in the model.
+ except by first clearing the model. Whatever properties are first added to the model are then the
+ only permitted properties in the model until it is cleared.
\section2 Using threaded list models with WorkerScript
@@ -214,11 +130,11 @@ QDeclarativeListModelParser::ListInstruction *QDeclarativeListModelParser::ListM
\snippet examples/declarative/threading/threadedlistmodel/dataloader.js 0
The application's \tt Timer object periodically sends a message to the
- worker script by calling \tt WorkerScript::sendMessage(). When this message
- is received, \tt WorkerScript.onMessage() is invoked in
+ worker script by calling \l WorkerScript::sendMessage(). When this message
+ is received, \l {WorkerScript::onMessage}{WorkerScript.onMessage()} is invoked in
\tt dataloader.js, which appends the current time to the list model.
- Note the call to sync() from the \c WorkerScript.onMessage() handler.
+ Note the call to sync() from the \l {WorkerScript::onMessage}{WorkerScript.onMessage()} handler.
You must call sync() or else the changes made to the list from the external
thread will not be reflected in the list model in the main thread.
@@ -244,7 +160,7 @@ QDeclarativeListModelParser::ListInstruction *QDeclarativeListModelParser::ListM
In addition, the WorkerScript cannot add any list data to the model.
- \sa {qmlmodels}{Data Models}, WorkerScript, QtDeclarative
+ \sa {qmlmodels}{Data Models}, {declarative/threading/threadedlistmodel}{Threaded ListModel example}, QtDeclarative
*/
@@ -454,7 +370,7 @@ void QDeclarativeListModel::insert(int index, const QScriptValue& valuemap)
to the end of the list:
\code
- fruitModel.move(0,fruitModel.count-3,3)
+ fruitModel.move(0, fruitModel.count - 3, 3)
\endcode
\sa append()
diff --git a/src/declarative/util/qdeclarativepackage.cpp b/src/declarative/util/qdeclarativepackage.cpp
index 9617b86..b149120 100644
--- a/src/declarative/util/qdeclarativepackage.cpp
+++ b/src/declarative/util/qdeclarativepackage.cpp
@@ -48,17 +48,17 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass Package QDeclarativePackage
- \brief Package provides a collection of named items
+ \brief Package provides a collection of named items.
- The Package class is currently used in conjunction with
+ The Package class is used in conjunction with
VisualDataModel to enable delegates with a shared context
to be provided to multiple views.
Any item within a Package may be assigned a name via the
- \e {Package.name} attached property.
+ \l{Package::name}{Package.name} attached property.
The example below creates a Package containing two named items;
- \e list and \e grid. The third element in the package is parented to whichever
+ \e list and \e grid. The third element in the package (the \l Rectangle) is parented to whichever
delegate it should appear in. This allows an item to move
between views.
@@ -70,7 +70,12 @@ QT_BEGIN_NAMESPACE
\snippet examples/declarative/modelviews/package/view.qml 0
- \sa QtDeclarative
+ \sa {declarative/modelviews/package}{Package example}, QtDeclarative
+*/
+
+/*!
+ \qmlattachedproperty bool Package::name
+ This attached property holds the name of an item within a Package.
*/
diff --git a/src/declarative/util/qdeclarativepackage_p.h b/src/declarative/util/qdeclarativepackage_p.h
index 87d9b80..6b12ef7 100644
--- a/src/declarative/util/qdeclarativepackage_p.h
+++ b/src/declarative/util/qdeclarativepackage_p.h
@@ -50,15 +50,9 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-/*****************************************************************************
- *****************************************************************************
- XXX Experimental
- *****************************************************************************
-*****************************************************************************/
-
class QDeclarativePackagePrivate;
class QDeclarativePackageAttached;
-class QDeclarativePackage : public QObject
+class Q_AUTOTEST_EXPORT QDeclarativePackage : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativePackage)
diff --git a/src/declarative/util/qdeclarativepropertychanges.cpp b/src/declarative/util/qdeclarativepropertychanges.cpp
index 08f4750..8e3ec82 100644
--- a/src/declarative/util/qdeclarativepropertychanges.cpp
+++ b/src/declarative/util/qdeclarativepropertychanges.cpp
@@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE
PropertyChanges provides a state change that modifies the properties of an item.
- Here is a property change that modifies the text and color of a Text element
+ Here is a property change that modifies the text and color of a \l Text element
when it is clicked:
\qml
@@ -91,7 +91,7 @@ QT_BEGIN_NAMESPACE
\endqml
By default, PropertyChanges will establish new bindings where appropriate.
- For example, the following creates a new binding for myItem's height property.
+ For example, the following creates a new binding for myItem's \c height property.
\qml
PropertyChanges {
@@ -500,8 +500,8 @@ QDeclarativePropertyChanges::ActionList QDeclarativePropertyChanges::actions()
If explicit is set to true, any potential bindings will be interpreted as
once-off assignments that occur when the state is entered.
- In the following example, the addition of explicit prevents myItem.width from
- being bound to parent.width. Instead, it is assigned the value of parent.width
+ In the following example, the addition of explicit prevents \c myItem.width from
+ being bound to \c parent.width. Instead, it is assigned the value of \c parent.width
at the time of the state change.
\qml
PropertyChanges {
diff --git a/src/declarative/util/qdeclarativesmoothedanimation.cpp b/src/declarative/util/qdeclarativesmoothedanimation.cpp
index bd48ef0..6b6df4d 100644
--- a/src/declarative/util/qdeclarativesmoothedanimation.cpp
+++ b/src/declarative/util/qdeclarativesmoothedanimation.cpp
@@ -307,7 +307,7 @@ Rectangle {
set to a value such as 0.5 units/second. Animating from 0 to 1.0 with a velocity
of 0.5 will take 2000 ms to complete.
- \sa SpringFollow
+ \sa SpringFollow, {QML Animation}, {declarative/animation/basics}{Animation basics example}
*/
QDeclarativeSmoothedAnimation::QDeclarativeSmoothedAnimation(QObject *parent)
diff --git a/src/declarative/util/qdeclarativesmoothedanimation_p_p.h b/src/declarative/util/qdeclarativesmoothedanimation_p_p.h
index 81cd229..8cdbea2 100644
--- a/src/declarative/util/qdeclarativesmoothedanimation_p_p.h
+++ b/src/declarative/util/qdeclarativesmoothedanimation_p_p.h
@@ -65,7 +65,7 @@
QT_BEGIN_NAMESPACE
-class QSmoothedAnimation : public QAbstractAnimation
+class Q_AUTOTEST_EXPORT QSmoothedAnimation : public QAbstractAnimation
{
public:
QSmoothedAnimation(QObject *parent=0);
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index dc2b2cc..ae19a9c 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -136,12 +136,31 @@ QDeclarativeStateOperation::QDeclarativeStateOperation(QObjectPrivate &dd, QObje
\since 4.7
\brief The State element defines configurations of objects and properties.
- A state is specified as a set of batched changes from the default configuration.
+ A \e state is a set of batched changes from the default configuration.
+
+ All items have a default state that defines the default configuration of objects
+ and property values. New states can be defined by adding State items to the \l {Item::states}{states} property to
+ allow items to switch between different configurations. These configurations
+ can, for example, be used to apply different sets of property values or execute
+ different scripts.
+
+ The following example displays a single Rectangle. In the default state, the rectangle
+ is colored black. In the "clicked" state, a PropertyChanges element changes the
+ rectangle's color to red. Clicking within the MouseArea toggles the rectangle's state
+ between the default state and the "clicked" state, thus toggling the color of the
+ rectangle between black and red.
+
+ \snippet doc/src/snippets/declarative/state.qml 0
+
+ Notice the default state is referred to using an empty string ("").
+
+ States are commonly used together with \l {state-transitions}{Transitions} to provide
+ animations when state changes occur.
\note setting the state of an object from within another state of the same object is
not allowed.
- \sa {qmlstates}{States}, {state-transitions}{Transitions}, QtDeclarative
+ \sa {declarative/animation/states}{states example}, {qmlstates}{States}, {state-transitions}{Transitions}, QtDeclarative
*/
/*!
@@ -173,7 +192,7 @@ QDeclarativeState::~QDeclarativeState()
/*!
\qmlproperty string State::name
- This property holds the name of the state
+ This property holds the name of the state.
Each state should have a unique name.
*/
@@ -187,6 +206,13 @@ void QDeclarativeState::setName(const QString &n)
{
Q_D(QDeclarativeState);
d->name = n;
+ d->named = true;
+}
+
+bool QDeclarativeState::isNamed() const
+{
+ Q_D(const QDeclarativeState);
+ return d->named;
}
bool QDeclarativeState::isWhenKnown() const
@@ -197,12 +223,12 @@ bool QDeclarativeState::isWhenKnown() const
/*!
\qmlproperty bool State::when
- This property holds when the state should be applied
+ This property holds when the state should be applied.
- This should be set to an expression that evaluates to true when you want the state to
+ This should be set to an expression that evaluates to \c true when you want the state to
be applied.
- If multiple states in a group have \c when clauses that evaluate to true at the same time,
+ If multiple states in a group have \c when clauses that evaluate to \c true at the same time,
the first matching state will be applied. For example, in the following snippet
\c state1 will always be selected rather than \c state2 when sharedCondition becomes
\c true.
@@ -229,7 +255,9 @@ void QDeclarativeState::setWhen(QDeclarativeBinding *when)
/*!
\qmlproperty string State::extend
- This property holds the state that this state extends
+ This property holds the state that this state extends.
+
+ When a state extends another state, it inherits all the changes of that state.
The state being extended is treated as the base state in regards to
the changes specified by the extending state.
diff --git a/src/declarative/util/qdeclarativestate_p.h b/src/declarative/util/qdeclarativestate_p.h
index 25715c6..2e2ce7b 100644
--- a/src/declarative/util/qdeclarativestate_p.h
+++ b/src/declarative/util/qdeclarativestate_p.h
@@ -84,7 +84,7 @@ public:
void deleteFromBinding();
};
-class QDeclarativeActionEvent
+class Q_AUTOTEST_EXPORT QDeclarativeActionEvent
{
public:
virtual ~QDeclarativeActionEvent();
@@ -146,6 +146,7 @@ public:
QString name() const;
void setName(const QString &);
+ bool isNamed() const;
/*'when' is a QDeclarativeBinding to limit state changes oscillation
due to the unpredictable order of evaluation of bound expressions*/
diff --git a/src/declarative/util/qdeclarativestate_p_p.h b/src/declarative/util/qdeclarativestate_p_p.h
index 4a2af0f..2ef9bb0 100644
--- a/src/declarative/util/qdeclarativestate_p_p.h
+++ b/src/declarative/util/qdeclarativestate_p_p.h
@@ -101,12 +101,13 @@ class QDeclarativeStatePrivate : public QObjectPrivate
public:
QDeclarativeStatePrivate()
- : when(0), inState(false), group(0) {}
+ : when(0), named(false), inState(false), group(0) {}
typedef QList<QDeclarativeSimpleAction> SimpleActionList;
QString name;
QDeclarativeBinding *when;
+ bool named;
struct OperationGuard : public QDeclarativeGuard<QDeclarativeStateOperation>
{
diff --git a/src/declarative/util/qdeclarativestategroup.cpp b/src/declarative/util/qdeclarativestategroup.cpp
index 9b042d7..67cd12e 100644
--- a/src/declarative/util/qdeclarativestategroup.cpp
+++ b/src/declarative/util/qdeclarativestategroup.cpp
@@ -91,8 +91,8 @@ public:
\since 4.7
\brief The StateGroup element provides state support for non-Item elements.
- Item (and all dervied elements) provides built in support for states and transitions
- via its state, states and transitions properties. StateGroup provides an easy way to
+ Item (and all derived elements) provides built in support for states and transitions
+ via its \l{Item::state}{state}, \l{Item::states}{states} and \l{Item::transitions}{transitions} properties. StateGroup provides an easy way to
use this support in other (non-Item-derived) elements.
\qml
@@ -263,7 +263,7 @@ void QDeclarativeStateGroup::componentComplete()
for (int ii = 0; ii < d->states.count(); ++ii) {
QDeclarativeState *state = d->states.at(ii);
- if (state->name().isEmpty())
+ if (!state->isNamed())
state->setName(QLatin1String("anonymousState") % QString::number(++d->unnamedCount));
}
@@ -295,7 +295,7 @@ bool QDeclarativeStateGroupPrivate::updateAutoState()
for (int ii = 0; ii < states.count(); ++ii) {
QDeclarativeState *state = states.at(ii);
if (state->isWhenKnown()) {
- if (!state->name().isEmpty()) {
+ if (state->isNamed()) {
if (state->when() && state->when()->evaluate().toBool()) {
if (stateChangeDebug())
qWarning() << "Setting auto state due to:"
diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp
index 99f163e..51e6f99 100644
--- a/src/declarative/util/qdeclarativestateoperations.cpp
+++ b/src/declarative/util/qdeclarativestateoperations.cpp
@@ -172,6 +172,14 @@ void QDeclarativeParentChangePrivate::doChange(QDeclarativeItem *targetParent, Q
items involved in the reparenting (i.e. items in the common ancestor tree
for the original and new parent).
+ The example below displays a large red rectangle and a small blue rectangle, side by side.
+ When the \c blueRect is clicked, it changes to the "reparented" state: its parent is changed to \c redRect and it is
+ positioned at (10, 10) within the red rectangle, as specified in the ParentChange.
+
+ \snippet doc/src/snippets/declarative/parentchange.qml 0
+
+ \image parentchange.png
+
You can specify at which point in a transition you want a ParentChange to occur by
using a ParentAnimation.
*/
@@ -583,9 +591,9 @@ public:
\qmlclass StateChangeScript QDeclarativeStateChangeScript
\brief The StateChangeScript element allows you to run a script in a state.
- StateChangeScripts are run when entering the state. You can use
- ScriptAction to specify at which point in the transition
- you want the StateChangeScript to be run.
+ A StateChangeScript is run upon entering a state. You can optionally use
+ ScriptAction to specify the point in the transition at which
+ the StateChangeScript should to be run.
\qml
State {
@@ -687,22 +695,18 @@ QString QDeclarativeStateChangeScript::typeName() const
\qmlclass AnchorChanges QDeclarativeAnchorChanges
\brief The AnchorChanges element allows you to change the anchors of an item in a state.
- In the following example we change the top and bottom anchors of an item:
- \qml
- State {
- name: "reanchored"
- AnchorChanges {
- target: content;
- anchors.top: window.top;
- anchors.bottom: window.bottom
- }
- PropertyChanges {
- target: content;
- anchors.topMargin: 3
- anchors.bottomMargin: 3;
- }
- }
- \endqml
+ The AnchorChanges element is used to modify the anchors of an item in a \l State.
+
+ AnchorChanges cannot be used to modify the margins on an item. For this, use
+ PropertyChanges intead.
+
+ In the following example we change the top and bottom anchors of an item
+ using AnchorChanges, and the top and bottom anchor margins using
+ PropertyChanges:
+
+ \snippet doc/src/snippets/declarative/anchorchanges.qml 0
+
+ \image anchorchanges.png
AnchorChanges can be animated using AnchorAnimation.
\qml
diff --git a/src/declarative/util/qdeclarativesystempalette.cpp b/src/declarative/util/qdeclarativesystempalette.cpp
index 6c62446..c334859 100644
--- a/src/declarative/util/qdeclarativesystempalette.cpp
+++ b/src/declarative/util/qdeclarativesystempalette.cpp
@@ -59,22 +59,25 @@ public:
/*!
\qmlclass SystemPalette QDeclarativeSystemPalette
\since 4.7
- \brief The SystemPalette item gives access to the Qt palettes.
- \sa QPalette
+ \brief The SystemPalette element provides access to the Qt palettes.
- Example:
- \qml
- SystemPalette { id: myPalette; colorGroup: Qt.Active }
+ The SystemPalette element provides access to the Qt application
+ palettes. This provides information about the standard colors used
+ for application windows, buttons and other features. These colors
+ are grouped into three \e {color groups}: \c Active, \c Inactive,
+ and \c Disabled. See the QPalette documentation for details about
+ color groups and the properties provided by SystemPalette.
- Rectangle {
- width: 640; height: 480
- color: myPalette.window
- Text {
- anchors.fill: parent
- text: "Hello!"; color: myPalette.windowText
- }
- }
- \endqml
+ This can be used to color items in a way that provides a more
+ native look and feel.
+
+ The following example creates a palette from the \c Active color
+ group and uses this to color the window and text items
+ appropriately:
+
+ \snippet doc/src/snippets/declarative/systempalette.qml 0
+
+ \sa QPalette
*/
QDeclarativeSystemPalette::QDeclarativeSystemPalette(QObject *parent)
: QObject(*(new QDeclarativeSystemPalettePrivate), parent)
@@ -258,10 +261,15 @@ QColor QDeclarativeSystemPalette::highlightedText() const
}
/*!
- \qmlproperty QDeclarativeSystemPalette::ColorGroup SystemPalette::colorGroup
+ \qmlproperty enumeration SystemPalette::colorGroup
+
+ The color group of the palette. This can be one of:
- The color group of the palette. It can be Active, Inactive or Disabled.
- Active is the default.
+ \list
+ \o SystemPalette.Active (default)
+ \o SystemPalette.Inactive
+ \o SystemPalette.Disabled
+ \endlist
\sa QPalette::ColorGroup
*/
diff --git a/src/declarative/util/qdeclarativetimeline_p_p.h b/src/declarative/util/qdeclarativetimeline_p_p.h
index 598c897..61f6bcd 100644
--- a/src/declarative/util/qdeclarativetimeline_p_p.h
+++ b/src/declarative/util/qdeclarativetimeline_p_p.h
@@ -63,7 +63,7 @@ class QDeclarativeTimeLineValue;
class QDeclarativeTimeLineCallback;
struct QDeclarativeTimeLinePrivate;
class QDeclarativeTimeLineObject;
-class QDeclarativeTimeLine : public QAbstractAnimation
+class Q_AUTOTEST_EXPORT QDeclarativeTimeLine : public QAbstractAnimation
{
Q_OBJECT
public:
@@ -117,7 +117,7 @@ private:
QDeclarativeTimeLinePrivate *d;
};
-class QDeclarativeTimeLineObject
+class Q_AUTOTEST_EXPORT QDeclarativeTimeLineObject
{
public:
QDeclarativeTimeLineObject();
@@ -129,7 +129,7 @@ protected:
QDeclarativeTimeLine *_t;
};
-class QDeclarativeTimeLineValue : public QDeclarativeTimeLineObject
+class Q_AUTOTEST_EXPORT QDeclarativeTimeLineValue : public QDeclarativeTimeLineObject
{
public:
QDeclarativeTimeLineValue(qreal v = 0.) : _v(v) {}
@@ -147,7 +147,7 @@ private:
qreal _v;
};
-class QDeclarativeTimeLineCallback
+class Q_AUTOTEST_EXPORT QDeclarativeTimeLineCallback
{
public:
typedef void (*Callback)(void *);
diff --git a/src/declarative/util/qdeclarativetimer.cpp b/src/declarative/util/qdeclarativetimer.cpp
index 53a9d83..9e18eb5 100644
--- a/src/declarative/util/qdeclarativetimer.cpp
+++ b/src/declarative/util/qdeclarativetimer.cpp
@@ -80,17 +80,22 @@ public:
the text every 500 milliseconds:
\qml
- Timer {
- interval: 500; running: true; repeat: true
- onTriggered: time.text = Date().toString()
- }
- Text {
- id: time
+ import Qt 4.7
+
+ Item {
+ Timer {
+ interval: 500; running: true; repeat: true
+ onTriggered: time.text = Date().toString()
+ }
+
+ Text {
+ id: time
+ }
}
\endqml
- QDeclarativeTimer is synchronized with the animation timer. Since the animation
- timer is usually set to 60fps, the resolution of QDeclarativeTimer will be
+ The Timer element is synchronized with the animation timer. Since the animation
+ timer is usually set to 60fps, the resolution of Timer will be
at best 16ms.
If the Timer is running and one of its properties is changed, the
@@ -98,8 +103,6 @@ public:
1000ms has its \e repeat property changed 500ms after starting, the
elapsed time will be reset to 0, and the Timer will be triggered
1000ms later.
-
- \sa {QtDeclarative}
*/
QDeclarativeTimer::QDeclarativeTimer(QObject *parent)
diff --git a/src/declarative/util/qdeclarativetransitionmanager_p_p.h b/src/declarative/util/qdeclarativetransitionmanager_p_p.h
index 2e23898..75d11a9 100644
--- a/src/declarative/util/qdeclarativetransitionmanager_p_p.h
+++ b/src/declarative/util/qdeclarativetransitionmanager_p_p.h
@@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE
class QDeclarativeStatePrivate;
class QDeclarativeTransitionManagerPrivate;
-class QDeclarativeTransitionManager
+class Q_AUTOTEST_EXPORT QDeclarativeTransitionManager
{
public:
QDeclarativeTransitionManager();
diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp
index 6059ad6..0414e65 100644
--- a/src/declarative/util/qdeclarativeview.cpp
+++ b/src/declarative/util/qdeclarativeview.cpp
@@ -131,7 +131,7 @@ class QDeclarativeViewPrivate : public QGraphicsViewPrivate, public QDeclarative
Q_DECLARE_PUBLIC(QDeclarativeView)
public:
QDeclarativeViewPrivate()
- : root(0), declarativeItemRoot(0), graphicsWidgetRoot(0), component(0), resizeMode(QDeclarativeView::SizeViewToRootObject) {}
+ : root(0), declarativeItemRoot(0), graphicsWidgetRoot(0), component(0), resizeMode(QDeclarativeView::SizeViewToRootObject), initialSize(0,0) {}
~QDeclarativeViewPrivate() { delete root; }
void execute();
void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry);
@@ -150,6 +150,7 @@ public:
QBasicTimer resizetimer;
QDeclarativeView::ResizeMode resizeMode;
+ QSize initialSize;
QElapsedTimer frameTimer;
void init();
@@ -586,9 +587,11 @@ void QDeclarativeView::setRootObject(QObject *obj)
}
if (d->root) {
- QSize initialSize = d->rootObjectSize();
- if (initialSize != size()) {
- resize(initialSize);
+ d->initialSize = d->rootObjectSize();
+ if (d->initialSize != size()) {
+ if (!(parentWidget() && parentWidget()->layout())) {
+ resize(d->initialSize);
+ }
}
d->initResize();
}
@@ -638,6 +641,15 @@ QSize QDeclarativeView::sizeHint() const
}
/*!
+ Returns the initial size of the root object
+*/
+QSize QDeclarativeView::initialSize() const
+{
+ Q_D(const QDeclarativeView);
+ return d->initialSize;
+}
+
+/*!
Returns the view's root \l {QGraphicsObject} {item}.
*/
QGraphicsObject *QDeclarativeView::rootObject() const
diff --git a/src/declarative/util/qdeclarativeview.h b/src/declarative/util/qdeclarativeview.h
index e9cff32..cdcf134 100644
--- a/src/declarative/util/qdeclarativeview.h
+++ b/src/declarative/util/qdeclarativeview.h
@@ -90,6 +90,7 @@ public:
QList<QDeclarativeError> errors() const;
QSize sizeHint() const;
+ QSize initialSize() const;
Q_SIGNALS:
void sceneResized(QSize size); // ???
diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp
index 4f9355b..4adef25 100644
--- a/src/declarative/util/qdeclarativexmllistmodel.cpp
+++ b/src/declarative/util/qdeclarativexmllistmodel.cpp
@@ -523,10 +523,13 @@ void QDeclarativeXmlListModelPrivate::clear_role(QDeclarativeListProperty<QDecla
A XmlListModel could create a model from this data, like this:
\qml
+ import Qt 4.7
+
XmlListModel {
id: xmlModel
source: "http://www.mysite.com/feed.xml"
query: "/rss/channel/item"
+
XmlRole { name: "title"; query: "title/string()" }
XmlRole { name: "pubDate"; query: "pubDate/string()" }
}
@@ -536,7 +539,7 @@ void QDeclarativeXmlListModelPrivate::clear_role(QDeclarativeListProperty<QDecla
a model item for each \c <item> in the XML document.
The XmlRole objects define the
- model item attributes; here, each model item will have \c title and \c pubDate
+ model item attributes. Here, each model item will have \c title and \c pubDate
attributes that match the \c title and \c pubDate values of its corresponding \c <item>.
(See \l XmlRole::query for more examples of valid XPath expressions for XmlRole.)
@@ -672,11 +675,11 @@ void QDeclarativeXmlListModel::setSource(const QUrl &src)
/*!
\qmlproperty string XmlListModel::xml
- This property holds XML text set directly.
+ This property holds the XML data for this model, if set.
The text is assumed to be UTF-8 encoded.
- If both source and xml are set, xml will be used.
+ If both \l source and \c xml are set, \c xml will be used.
*/
QString QDeclarativeXmlListModel::xml() const
{
@@ -733,6 +736,7 @@ void QDeclarativeXmlListModel::setQuery(const QString &query)
source: "http://mysite.com/feed.xml"
query: "/feed/entry"
namespaceDeclarations: "declare default element namespace 'http://www.w3.org/2005/Atom';"
+
XmlRole { name: "title"; query: "title/string()" }
}
\endqml
diff --git a/src/declarative/3rdparty/qlistmodelinterface.cpp b/src/declarative/util/qlistmodelinterface.cpp
index 98d6a5b..98d6a5b 100644
--- a/src/declarative/3rdparty/qlistmodelinterface.cpp
+++ b/src/declarative/util/qlistmodelinterface.cpp
diff --git a/src/declarative/3rdparty/qlistmodelinterface_p.h b/src/declarative/util/qlistmodelinterface_p.h
index 07592ad..07592ad 100644
--- a/src/declarative/3rdparty/qlistmodelinterface_p.h
+++ b/src/declarative/util/qlistmodelinterface_p.h
diff --git a/src/declarative/util/util.pri b/src/declarative/util/util.pri
index f20bba1..04cfc68 100644
--- a/src/declarative/util/util.pri
+++ b/src/declarative/util/util.pri
@@ -27,7 +27,8 @@ SOURCES += \
$$PWD/qdeclarativebehavior.cpp \
$$PWD/qdeclarativefontloader.cpp \
$$PWD/qdeclarativestyledtext.cpp \
- $$PWD/qdeclarativelistmodelworkeragent.cpp
+ $$PWD/qdeclarativelistmodelworkeragent.cpp \
+ $$PWD/qlistmodelinterface.cpp
HEADERS += \
$$PWD/qdeclarativeutilmodule_p.h\
@@ -61,7 +62,8 @@ HEADERS += \
$$PWD/qdeclarativebehavior_p.h \
$$PWD/qdeclarativefontloader_p.h \
$$PWD/qdeclarativestyledtext_p.h \
- $$PWD/qdeclarativelistmodelworkeragent_p.h
+ $$PWD/qdeclarativelistmodelworkeragent_p.h \
+ $$PWD/qlistmodelinterface_p.h
contains(QT_CONFIG, xmlpatterns) {
QT+=xmlpatterns
diff --git a/src/gui/embedded/qwsmanager_qws.cpp b/src/gui/embedded/qwsmanager_qws.cpp
index 79076c5..b0259b9 100644
--- a/src/gui/embedded/qwsmanager_qws.cpp
+++ b/src/gui/embedded/qwsmanager_qws.cpp
@@ -394,7 +394,7 @@ void QWSManagerPrivate::dirtyRegion(int decorationRegion,
const QRegion &clip)
{
QTLWExtra *topextra = managed->d_func()->extra->topextra;
- QWidgetBackingStore *bs = topextra->backingStore;
+ QWidgetBackingStore *bs = topextra->backingStore.data();
const bool pendingUpdateRequest = bs->isDirty();
if (decorationRegion == QDecoration::All) {
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 36d21a6..8042c46 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -1427,12 +1427,14 @@ QGraphicsItem::~QGraphicsItem()
d_ptr->inDestructor = 1;
d_ptr->removeExtraItemCache();
+#ifndef QT_NO_GESTURES
if (d_ptr->isObject && !d_ptr->gestureContext.isEmpty()) {
QGraphicsObject *o = static_cast<QGraphicsObject *>(this);
QGestureManager *manager = QGestureManager::instance();
foreach (Qt::GestureType type, d_ptr->gestureContext.keys())
manager->cleanupCachedGestures(o, type);
}
+#endif
clearFocus();
@@ -5687,32 +5689,30 @@ void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect)
return;
}
+ // Find pixmap in cache.
QPixmap cachedPixmap;
if (!QPixmapCache::find(cache->key, &cachedPixmap)) {
update(rect);
return;
}
+ QRect scrollRect = (rect.isNull() ? boundingRect() : rect).toAlignedRect();
+ if (!scrollRect.intersects(cache->boundingRect))
+ return; // Nothing to scroll.
+
+ // Remove from cache to avoid deep copy when modifying.
+ QPixmapCache::remove(cache->key);
+
QRegion exposed;
- const bool scrollEntirePixmap = rect.isNull();
- if (scrollEntirePixmap) {
- // Scroll entire pixmap.
- cachedPixmap.scroll(dx, dy, cachedPixmap.rect(), &exposed);
- } else {
- if (!rect.intersects(cache->boundingRect))
- return; // Nothing to scroll.
- // Scroll sub-rect of pixmap. The rect is in item coordinates
- // so we have to translate it to pixmap coordinates.
- QRect scrollRect = rect.toAlignedRect();
- cachedPixmap.scroll(dx, dy, scrollRect.translated(-cache->boundingRect.topLeft()), &exposed);
- }
+ cachedPixmap.scroll(dx, dy, scrollRect.translated(-cache->boundingRect.topLeft()), &exposed);
- QPixmapCache::replace(cache->key, cachedPixmap);
+ // Reinsert into cache.
+ cache->key = QPixmapCache::insert(cachedPixmap);
// Translate the existing expose.
for (int i = 0; i < cache->exposed.size(); ++i) {
QRectF &e = cache->exposed[i];
- if (!scrollEntirePixmap && !e.intersects(rect))
+ if (!rect.isNull() && !e.intersects(rect))
continue;
e.translate(dx, dy);
}
@@ -7573,6 +7573,7 @@ QGraphicsObject::QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent
QGraphicsItem::d_ptr->isObject = true;
}
+#ifndef QT_NO_GESTURES
/*!
Subscribes the graphics object to the given \a gesture with specific \a flags.
@@ -7596,6 +7597,8 @@ void QGraphicsObject::ungrabGesture(Qt::GestureType gesture)
if (QGraphicsItem::d_ptr->gestureContext.remove(gesture) && QGraphicsItem::d_ptr->scene)
QGraphicsItem::d_ptr->scene->d_func()->ungrabGesture(this, gesture);
}
+#endif // QT_NO_GESTURES
+
/*!
Updates the item's micro focus. This is slot for convenience.
diff --git a/src/gui/graphicsview/qgraphicsitem.h b/src/gui/graphicsview/qgraphicsitem.h
index 9891af3..d7d5332 100644
--- a/src/gui/graphicsview/qgraphicsitem.h
+++ b/src/gui/graphicsview/qgraphicsitem.h
@@ -485,7 +485,9 @@ private:
friend class QGraphicsSceneBspTreeIndexPrivate;
friend class QGraphicsItemEffectSourcePrivate;
friend class QGraphicsTransformPrivate;
+#ifndef QT_NO_GESTURES
friend class QGestureManager;
+#endif
friend class ::tst_QGraphicsItem;
friend bool qt_closestLeaf(const QGraphicsItem *, const QGraphicsItem *);
friend bool qt_closestItemFirst(const QGraphicsItem *, const QGraphicsItem *);
@@ -572,8 +574,10 @@ public:
using QObject::children;
#endif
+#ifndef QT_NO_GESTURES
void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags());
void ungrabGesture(Qt::GestureType type);
+#endif
protected Q_SLOTS:
void updateMicroFocus();
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index e812f29..bde6e7d 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -525,7 +525,9 @@ public:
QGraphicsItem *focusScopeItem;
Qt::InputMethodHints imHints;
QGraphicsItem::PanelModality panelModality;
+#ifndef QT_NO_GESTURES
QMap<Qt::GestureType, Qt::GestureFlags> gestureContext;
+#endif
// Packed 32 bits
quint32 acceptedMouseButtons : 5;
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 22c3f92..7b0722e 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -699,6 +699,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
if (!selectionChanging && selectedItems.size() != oldSelectedItemsSize)
emit q->selectionChanged();
+#ifndef QT_NO_GESTURES
QHash<QGesture *, QGraphicsObject *>::iterator it;
for (it = gestureTargets.begin(); it != gestureTargets.end();) {
if (it.value() == item)
@@ -706,6 +707,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
else
++it;
}
+
QGraphicsObject *dummy = static_cast<QGraphicsObject *>(item);
cachedTargetItems.removeOne(dummy);
cachedItemGestures.remove(dummy);
@@ -713,6 +715,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
foreach (Qt::GestureType gesture, item->d_ptr->gestureContext.keys())
ungrabGesture(item, gesture);
+#endif // QT_NO_GESTURES
}
/*!
@@ -1180,11 +1183,13 @@ bool QGraphicsScenePrivate::filterEvent(QGraphicsItem *item, QEvent *event)
bool QGraphicsScenePrivate::sendEvent(QGraphicsItem *item, QEvent *event)
{
if (QGraphicsObject *object = item->toGraphicsObject()) {
+#ifndef QT_NO_GESTURES
QGestureManager *gestureManager = QApplicationPrivate::instance()->gestureManager;
if (gestureManager) {
if (gestureManager->filterEvent(object, event))
return true;
}
+#endif // QT_NO_GESTURES
}
if (filterEvent(item, event))
@@ -2602,8 +2607,10 @@ void QGraphicsScene::addItem(QGraphicsItem *item)
d->enableTouchEventsOnViews();
}
+#ifndef QT_NO_GESTURES
foreach (Qt::GestureType gesture, item->d_ptr->gestureContext.keys())
d->grabGesture(item, gesture);
+#endif
// Update selection lists
if (item->isSelected())
@@ -3525,10 +3532,12 @@ bool QGraphicsScene::event(QEvent *event)
case QEvent::TouchEnd:
d->touchEventHandler(static_cast<QTouchEvent *>(event));
break;
+#ifndef QT_NO_GESTURES
case QEvent::Gesture:
case QEvent::GestureOverride:
d->gestureEventHandler(static_cast<QGestureEvent *>(event));
break;
+#endif // QT_NO_GESTURES
default:
return QObject::event(event);
}
@@ -5637,8 +5646,10 @@ bool QGraphicsScene::sendEvent(QGraphicsItem *item, QEvent *event)
void QGraphicsScenePrivate::addView(QGraphicsView *view)
{
views << view;
+#ifndef QT_NO_GESTURES
foreach (Qt::GestureType gesture, grabbedGestures.keys())
view->viewport()->grabGesture(gesture);
+#endif
}
void QGraphicsScenePrivate::removeView(QGraphicsView *view)
@@ -5968,6 +5979,7 @@ void QGraphicsScenePrivate::leaveModal(QGraphicsItem *panel)
dispatchHoverEvent(&hoverEvent);
}
+#ifndef QT_NO_GESTURES
void QGraphicsScenePrivate::gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures,
Qt::GestureFlag flag,
QHash<QGraphicsObject *, QSet<QGesture *> > *targets,
@@ -6356,6 +6368,7 @@ void QGraphicsScenePrivate::ungrabGesture(QGraphicsItem *item, Qt::GestureType g
view->viewport()->ungrabGesture(gesture);
}
}
+#endif // QT_NO_GESTURES
QT_END_NAMESPACE
diff --git a/src/gui/graphicsview/qgraphicsscene.h b/src/gui/graphicsview/qgraphicsscene.h
index c34a303..f8615f4 100644
--- a/src/gui/graphicsview/qgraphicsscene.h
+++ b/src/gui/graphicsview/qgraphicsscene.h
@@ -313,7 +313,9 @@ private:
friend class QGraphicsSceneBspTreeIndex;
friend class QGraphicsSceneBspTreeIndexPrivate;
friend class QGraphicsItemEffectSourcePrivate;
+#ifndef QT_NO_GESTURES
friend class QGesture;
+#endif
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsScene::SceneLayers)
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index 8ad2a0a..f28dfe9 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -299,6 +299,7 @@ public:
void enableTouchEventsOnViews();
QList<QGraphicsObject *> cachedTargetItems;
+#ifndef QT_NO_GESTURES
QHash<QGraphicsObject *, QSet<QGesture *> > cachedItemGestures;
QHash<QGraphicsObject *, QSet<QGesture *> > cachedAlreadyDeliveredGestures;
QHash<QGesture *, QGraphicsObject *> gestureTargets;
@@ -313,6 +314,7 @@ public:
void cancelGesturesForChildren(QGesture *original);
void grabGesture(QGraphicsItem *, Qt::GestureType gesture);
void ungrabGesture(QGraphicsItem *, Qt::GestureType gesture);
+#endif // QT_NO_GESTURES
void updateInputMethodSensitivityInViews();
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index a83b528..0674610 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -2688,10 +2688,12 @@ void QGraphicsView::setupViewport(QWidget *widget)
if (d->scene && !d->scene->d_func()->allItemsIgnoreTouchEvents)
widget->setAttribute(Qt::WA_AcceptTouchEvents);
+#ifndef QT_NO_GESTURES
if (d->scene) {
foreach (Qt::GestureType gesture, d->scene->d_func()->grabbedGestures.keys())
widget->grabGesture(gesture);
}
+#endif
widget->setAcceptDrops(acceptDrops());
}
@@ -2838,6 +2840,7 @@ bool QGraphicsView::viewportEvent(QEvent *event)
return true;
}
+#ifndef QT_NO_GESTURES
case QEvent::Gesture:
case QEvent::GestureOverride:
{
@@ -2851,6 +2854,7 @@ bool QGraphicsView::viewportEvent(QEvent *event)
}
return true;
}
+#endif // QT_NO_GESTURES
default:
break;
}
diff --git a/src/gui/image/qiconloader.cpp b/src/gui/image/qiconloader.cpp
index a515ef8..34f40a9 100644
--- a/src/gui/image/qiconloader.cpp
+++ b/src/gui/image/qiconloader.cpp
@@ -63,6 +63,8 @@
#include <private/qt_x11_p.h>
#endif
+#include <private/qstylehelper_p.h>
+
QT_BEGIN_NAMESPACE
Q_GLOBAL_STATIC(QIconLoader, iconLoaderInstance)
@@ -488,14 +490,12 @@ QPixmap PixmapEntry::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State st
basePixmap.load(filename);
int actualSize = qMin(size.width(), size.height());
- QString key = QLatin1String("$qt_theme_")
- + QString::number(basePixmap.cacheKey(), 16)
- + QLatin1Char('_')
- + QString::number(mode)
- + QLatin1Char('_')
- + QString::number(qApp->palette().cacheKey(), 16)
- + QLatin1Char('_')
- + QString::number(actualSize);
+
+ QString key = QLatin1Literal("$qt_theme_")
+ % HexString<qint64>(basePixmap.cacheKey())
+ % HexString<int>(mode)
+ % HexString<qint64>(qApp->palette().cacheKey())
+ % HexString<int>(actualSize);
QPixmap cachedPixmap;
if (QPixmapCache::find(key, &cachedPixmap)) {
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 98f235e..d89ffe6 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -272,6 +272,8 @@ bool QImageData::checkForAlphaPixels() const
switch (format) {
+ case QImage::Format_Mono:
+ case QImage::Format_MonoLSB:
case QImage::Format_Indexed8:
has_alpha_pixels = has_alpha_clut;
break;
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 3013726..20e4b50 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -82,6 +82,7 @@
#endif
#include "qpixmap_raster_p.h"
+#include "private/qstylehelper_p.h"
QT_BEGIN_NAMESPACE
@@ -829,8 +830,14 @@ bool QPixmap::load(const QString &fileName, const char *format, Qt::ImageConvers
return false;
QFileInfo info(fileName);
- QString key = QLatin1String("qt_pixmap_") + info.absoluteFilePath() + QLatin1Char('_') + QString::number(info.lastModified().toTime_t()) + QLatin1Char('_') +
- QString::number(info.size()) + QLatin1Char('_') + QString::number(data ? data->pixelType() : QPixmapData::PixmapType);
+ if (!info.exists())
+ return false;
+
+ QString key = QLatin1Literal("qt_pixmap")
+ % info.absoluteFilePath()
+ % HexString<uint>(info.lastModified().toTime_t())
+ % HexString<quint64>(info.size())
+ % HexString<uint>(data ? data->pixelType() : QPixmapData::PixmapType);
if (QPixmapCache::find(key, *this))
return true;
diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
index 7a6a73f..ca21a0c 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -196,9 +196,10 @@ public:
static QPixmapCache::KeyData* getKeyData(QPixmapCache::Key *key);
QList< QPair<QString,QPixmap> > allPixmaps() const;
- void flushDetachedPixmaps(bool nt);
+ bool flushDetachedPixmaps(bool nt);
private:
+ enum { soon_time = 10000, flush_time = 30000 };
int *keyArray;
int theid;
int ps;
@@ -236,38 +237,44 @@ QPMCache::~QPMCache()
cleaning-up, and to not cut down the size of the cache while the
cache is in active use.
- When the last pixmap has been deleted from the cache, kill the
- timer so Qt won't keep the CPU from going into sleep mode.
+ When the last detached pixmap has been deleted from the cache, kill the
+ timer so Qt won't keep the CPU from going into sleep mode. Currently
+ the timer is not restarted when the pixmap becomes unused, but it does
+ restart once something else is added (i.e. the cache space is actually needed).
+
+ Returns true if any were removed.
*/
-void QPMCache::flushDetachedPixmaps(bool nt)
+bool QPMCache::flushDetachedPixmaps(bool nt)
{
int mc = maxCost();
setMaxCost(nt ? totalCost() * 3 / 4 : totalCost() -1);
setMaxCost(mc);
ps = totalCost();
+ bool any = false;
QHash<QString, QPixmapCache::Key>::iterator it = cacheKeys.begin();
while (it != cacheKeys.end()) {
if (!contains(it.value())) {
releaseKey(it.value());
it = cacheKeys.erase(it);
+ any = true;
} else {
++it;
}
}
+
+ return any;
}
void QPMCache::timerEvent(QTimerEvent *)
{
bool nt = totalCost() == ps;
- flushDetachedPixmaps(nt);
-
- if (!size()) {
+ if (!flushDetachedPixmaps(nt)) {
killTimer(theid);
theid = 0;
} else if (nt != t) {
killTimer(theid);
- theid = startTimer(nt ? 10000 : 30000);
+ theid = startTimer(nt ? soon_time : flush_time);
t = nt;
}
}
@@ -315,7 +322,7 @@ bool QPMCache::insert(const QString& key, const QPixmap &pixmap, int cost)
if (success) {
cacheKeys.insert(key, cacheKey);
if (!theid) {
- theid = startTimer(30000);
+ theid = startTimer(flush_time);
t = false;
}
} else {
@@ -331,7 +338,7 @@ QPixmapCache::Key QPMCache::insert(const QPixmap &pixmap, int cost)
bool success = QCache<QPixmapCache::Key, QPixmapCacheEntry>::insert(cacheKey, new QPixmapCacheEntry(cacheKey, pixmap), cost);
if (success) {
if (!theid) {
- theid = startTimer(30000);
+ theid = startTimer(flush_time);
t = false;
}
} else {
@@ -352,7 +359,7 @@ bool QPMCache::replace(const QPixmapCache::Key &key, const QPixmap &pixmap, int
bool success = QCache<QPixmapCache::Key, QPixmapCacheEntry>::insert(cacheKey, new QPixmapCacheEntry(cacheKey, pixmap), cost);
if (success) {
if(!theid) {
- theid = startTimer(30000);
+ theid = startTimer(flush_time);
t = false;
}
const_cast<QPixmapCache::Key&>(key) = cacheKey;
diff --git a/src/gui/inputmethod/qximinputcontext_x11.cpp b/src/gui/inputmethod/qximinputcontext_x11.cpp
index d048b36..ed5aa23 100644
--- a/src/gui/inputmethod/qximinputcontext_x11.cpp
+++ b/src/gui/inputmethod/qximinputcontext_x11.cpp
@@ -346,10 +346,7 @@ static XFontSet getFontSet(const QFont &f)
extern bool qt_use_rtl_extensions; // from qapplication_x11.cpp
#ifndef QT_NO_XKB
-extern void q_getLocaleAndDirection(QLocale *locale,
- Qt::LayoutDirection *direction,
- const QByteArray &layoutName,
- const QByteArray &variantName);
+extern QLocale q_getKeyboardLocale(const QByteArray &layoutName, const QByteArray &variantName);
#endif
QXIMInputContext::QXIMInputContext()
@@ -407,17 +404,12 @@ QXIMInputContext::QXIMInputContext()
QList<QByteArray> layoutNames = QByteArray::fromRawData(names[2], qstrlen(names[2])).split(',');
QList<QByteArray> variantNames = QByteArray::fromRawData(names[3], qstrlen(names[3])).split(',');
for (int i = 0; i < qMin(layoutNames.count(), variantNames.count()); ++i ) {
- QLocale keyboardInputLocale;
- Qt::LayoutDirection keyboardInputDirection;
QByteArray variantName = variantNames.at(i);
const int dashPos = variantName.indexOf("-");
if (dashPos >= 0)
variantName.truncate(dashPos);
- q_getLocaleAndDirection(&keyboardInputLocale,
- &keyboardInputDirection,
- layoutNames.at(i),
- variantName);
- if (keyboardInputDirection == Qt::RightToLeft)
+ QLocale keyboardInputLocale = q_getKeyboardLocale(layoutNames.at(i), variantName);
+ if (keyboardInputLocale.textDirection() == Qt::RightToLeft)
qt_use_rtl_extensions = true;
}
}
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index a2c058a..52767b8 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -146,7 +146,7 @@ static void initResources()
QT_BEGIN_NAMESPACE
-Q_DECL_IMPORT extern void qt_call_post_routines();
+Q_CORE_EXPORT void qt_call_post_routines();
int QApplicationPrivate::app_compile_version = 0x040000; //we don't know exactly, but it's at least 4.0.0
@@ -187,8 +187,10 @@ QApplicationPrivate::QApplicationPrivate(int &argc, char **argv, QApplication::T
directPainters = 0;
#endif
+#ifndef QT_NO_GESTURES
gestureManager = 0;
gestureWidget = 0;
+#endif // QT_NO_GESTURES
#if defined(Q_WS_X11) || defined(Q_WS_WIN)
move_cursor = 0;
@@ -780,6 +782,9 @@ void QApplicationPrivate::construct(
qt_is_gui_used = (qt_appType != QApplication::Tty);
process_cmdline();
+ // the environment variable has the lowest precedence of runtime graphicssystem switches
+ if (graphics_system_name.isEmpty())
+ graphics_system_name = QString::fromLocal8Bit(qgetenv("QT_GRAPHICSSYSTEM"));
// Must be called before initialize()
qt_init(this, qt_appType
#ifdef Q_WS_X11
@@ -1560,10 +1565,18 @@ QStyle* QApplication::setStyle(const QString& style)
on-screen widgets and QPixmaps. The available systems are \c{"native"},
\c{"raster"} and \c{"opengl"}.
- This function call overrides both the application commandline
- \c{-graphicssystem} switch and the configure \c{-graphicssystem} switch.
+ There are several ways to set the graphics backend, in order of decreasing
+ precedence:
+ \list
+ \o the application commandline \c{-graphicssystem} switch
+ \o QApplication::setGraphicsSystem()
+ \o the QT_GRAPHICSSYSTEM environment variable
+ \o the Qt configure \c{-graphicssystem} switch
+ \endlist
+ If the highest precedence switch sets an invalid name, the error will be
+ ignored and the default backend will be used.
- \warning This function must be called before the QApplication constructor
+ \warning This function is only effective before the QApplication constructor
is called.
\note The \c{"opengl"} option is currently experimental.
@@ -3531,7 +3544,7 @@ int QApplication::startDragDistance()
void QApplication::setLayoutDirection(Qt::LayoutDirection direction)
{
- if (layout_direction == direction)
+ if (layout_direction == direction || direction == Qt::LayoutDirectionAuto)
return;
layout_direction = direction;
@@ -3707,6 +3720,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
#endif // !QT_NO_WHEELEVENT || !QT_NO_TABLETEVENT
}
+#ifndef QT_NO_GESTURES
// walk through parents and check for gestures
if (d->gestureManager) {
switch (e->type()) {
@@ -3751,7 +3765,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
}
}
}
-
+#endif // QT_NO_GESTURES
// User input and window activation makes tooltips sleep
switch (e->type()) {
@@ -4256,6 +4270,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
res = d->notify_helper(receiver, e);
break;
+#ifndef QT_NO_GESTURES
case QEvent::NativeGesture:
{
// only propagate the first gesture event (after the GID_BEGIN)
@@ -4334,6 +4349,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
}
break;
}
+#endif // QT_NO_GESTURES
default:
res = d->notify_helper(receiver, e);
break;
@@ -5766,6 +5782,7 @@ Q_GUI_EXPORT void qt_translateRawTouchEvent(QWidget *window,
QApplicationPrivate::translateRawTouchEvent(window, deviceType, touchPoints);
}
+#ifndef QT_NO_GESTURES
QGestureManager* QGestureManager::instance()
{
QApplicationPrivate *qAppPriv = QApplicationPrivate::instance();
@@ -5773,6 +5790,7 @@ QGestureManager* QGestureManager::instance()
qAppPriv->gestureManager = new QGestureManager(qApp);
return qAppPriv->gestureManager;
}
+#endif // QT_NO_GESTURES
// These pixmaps approximate the images in the Windows User Interface Guidelines.
diff --git a/src/gui/kernel/qapplication.h b/src/gui/kernel/qapplication.h
index c21b982..cb1d063 100644
--- a/src/gui/kernel/qapplication.h
+++ b/src/gui/kernel/qapplication.h
@@ -399,7 +399,9 @@ private:
friend class QDirectPainter;
friend class QDirectPainterPrivate;
#endif
+#ifndef QT_NO_GESTURES
friend class QGestureManager;
+#endif
#if defined(Q_WS_MAC) || defined(Q_WS_X11)
Q_PRIVATE_SLOT(d_func(), void _q_alertTimeOut())
diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h
index e83cd71..3a3f816 100644
--- a/src/gui/kernel/qapplication_p.h
+++ b/src/gui/kernel/qapplication_p.h
@@ -84,7 +84,9 @@ class QInputContext;
class QObject;
class QWidget;
class QSocketNotifier;
+#ifndef QT_NO_GESTURES
class QGestureManager;
+#endif
extern bool qt_is_gui_used;
#ifndef QT_NO_CLIPBOARD
@@ -200,6 +202,7 @@ typedef BOOL (WINAPI *PtrRegisterTouchWindow)(HWND, ULONG);
typedef BOOL (WINAPI *PtrGetTouchInputInfo)(HANDLE, UINT, PVOID, int);
typedef BOOL (WINAPI *PtrCloseTouchInputHandle)(HANDLE);
+#ifndef QT_NO_GESTURES
typedef BOOL (WINAPI *PtrGetGestureInfo)(HANDLE, PVOID);
typedef BOOL (WINAPI *PtrGetGestureExtraArgs)(HANDLE, UINT, PBYTE);
typedef BOOL (WINAPI *PtrCloseGestureInfoHandle)(HANDLE);
@@ -263,6 +266,8 @@ typedef struct tagGESTURECONFIG
#define GID_ROLLOVER 0xf003
#endif
+#endif // QT_NO_GESTURES
+
#endif // Q_WS_WIN
class QScopedLoopLevelCounter
@@ -519,6 +524,7 @@ public:
void sendSyntheticEnterLeave(QWidget *widget);
#endif
+#ifndef QT_NO_GESTURES
QGestureManager *gestureManager;
QWidget *gestureWidget;
#if defined(Q_WS_X11) || defined(Q_WS_WIN)
@@ -526,6 +532,7 @@ public:
QPixmap *copy_cursor;
QPixmap *link_cursor;
#endif
+#endif
#if defined(Q_WS_WIN)
QPixmap *ignore_cursor;
#endif
@@ -554,6 +561,7 @@ public:
QHash<DWORD, int> touchInputIDToTouchPointID;
bool translateTouchEvent(const MSG &msg);
+#ifndef QT_NO_GESTURES
PtrGetGestureInfo GetGestureInfo;
PtrGetGestureExtraArgs GetGestureExtraArgs;
PtrCloseGestureInfoHandle CloseGestureInfoHandle;
@@ -562,6 +570,7 @@ public:
PtrBeginPanningFeedback BeginPanningFeedback;
PtrUpdatePanningFeedback UpdatePanningFeedback;
PtrEndPanningFeedback EndPanningFeedback;
+#endif // QT_NO_GESTURES
#endif
#ifdef QT_RX71_MULTITOUCH
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 8ab82c9..a50fd95 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -1032,6 +1032,9 @@ void QSymbianControl::SizeChanged()
qwidget->d_func()->syncBackingStore();
if (!slowResize && tlwExtra)
tlwExtra->inTopLevelResize = false;
+ } else {
+ QResizeEvent *e = new QResizeEvent(newSize, oldSize);
+ QApplication::postEvent(qwidget, e);
}
}
@@ -1800,19 +1803,27 @@ int QApplicationPrivate::symbianProcessWsEvent(const QSymbianEvent *symbianEvent
return 1;
const TWsVisibilityChangedEvent *visChangedEvent = event->VisibilityChanged();
QWidget *w = QWidgetPrivate::mapper->value(control);
- if (!w->d_func()->maybeTopData())
+ QWidget *const window = w->window();
+ if (!window->d_func()->maybeTopData())
break;
+ QRefCountedWidgetBackingStore &backingStore = window->d_func()->maybeTopData()->backingStore;
if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::ENotVisible) {
- delete w->d_func()->topData()->backingStore;
- w->d_func()->topData()->backingStore = 0;
+ // Decrement backing store reference count
+ backingStore.deref();
// In order to ensure that any resources used by the window surface
// are immediately freed, we flush the WSERV command buffer.
S60->wsSession().Flush();
- } else if ((visChangedEvent->iFlags & TWsVisibilityChangedEvent::EPartiallyVisible)
- && !w->d_func()->maybeBackingStore()) {
- w->d_func()->topData()->backingStore = new QWidgetBackingStore(w);
- w->d_func()->invalidateBuffer(w->rect());
- w->repaint();
+ } else if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::EPartiallyVisible) {
+ if (backingStore.data()) {
+ // Increment backing store reference count
+ backingStore.ref();
+ } else {
+ // Create backing store with an initial reference count of 1
+ backingStore.create(window);
+ backingStore.ref();
+ w->d_func()->invalidateBuffer(w->rect());
+ w->repaint();
+ }
}
return 1;
}
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index 60fc5e1..09535fa 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -52,9 +52,11 @@ extern void qt_wince_hide_taskbar(HWND hwnd); //defined in qguifunctions_wince.c
#include <windowsm.h>
#include <tpcshell.h>
#ifdef QT_WINCE_GESTURES
+#ifndef QT_NO_GESTURES
#include <gesture.h>
#endif
#endif
+#endif
#include "qapplication.h"
#include "qdesktopwidget.h"
@@ -198,6 +200,7 @@ struct SHRGINFO {
#define SPI_SETSIPINFO 224
#endif
+#ifndef QT_NO_GESTURES
typedef DWORD (API *AygRecognizeGesture)(SHRGINFO*);
static AygRecognizeGesture ptrRecognizeGesture = 0;
static bool aygResolved = false;
@@ -211,6 +214,7 @@ static void resolveAygLibs()
ptrRecognizeGesture = (AygRecognizeGesture) ayglib.resolve("SHRecognizeGesture");
}
}
+#endif // QT_NO_GESTURES
#endif
@@ -463,7 +467,9 @@ public:
bool translateConfigEvent(const MSG &msg);
bool translateCloseEvent(const MSG &msg);
bool translateTabletEvent(const MSG &msg, PACKET *localPacketBuf, int numPackets);
+#ifndef QT_NO_GESTURES
bool translateGestureEvent(const MSG &msg, const GESTUREINFO &gi);
+#endif
void repolishStyle(QStyle &style);
inline void showChildren(bool spontaneous) { d_func()->showChildren(spontaneous); }
inline void hideChildren(bool spontaneous) { d_func()->hideChildren(spontaneous); }
@@ -843,6 +849,7 @@ void qt_init(QApplicationPrivate *priv, int)
ptrSetProcessDPIAware();
#endif
+#ifndef QT_NO_GESTURES
priv->GetGestureInfo = 0;
priv->GetGestureExtraArgs = 0;
priv->CloseGestureInfoHandle = 0;
@@ -883,6 +890,7 @@ void qt_init(QApplicationPrivate *priv, int)
(PtrEndPanningFeedback)QLibrary::resolve(QLatin1String("uxtheme"),
"EndPanningFeedback");
#endif
+#endif // QT_NO_GESTURES
}
/*****************************************************************************
@@ -1542,7 +1550,7 @@ extern "C" LRESULT QT_WIN_CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wPa
case WM_SETTINGCHANGE:
#ifdef Q_WS_WINCE
// CE SIP hide/show
- if (wParam == SPI_SETSIPINFO) {
+ if (qt_desktopWidget && wParam == SPI_SETSIPINFO) {
QResizeEvent re(QSize(0, 0), QSize(0, 0)); // Calculated by QDesktopWidget
QApplication::sendEvent(qt_desktopWidget, &re);
break;
@@ -1667,12 +1675,14 @@ extern "C" LRESULT QT_WIN_CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wPa
shrg.ptDown.y = GET_Y_LPARAM(lParam);
shrg.dwFlags = SHRG_RETURNCMD | SHRG_NOANIMATION;
resolveAygLibs();
+#ifndef QT_NO_GESTURES
if (ptrRecognizeGesture && (ptrRecognizeGesture(&shrg) == GN_CONTEXTMENU)) {
if (QApplication::activePopupWidget())
QApplication::activePopupWidget()->close();
QContextMenuEvent e(QContextMenuEvent::Mouse, pos, globalPos);
result = qt_sendSpontaneousEvent(alienWidget, &e);
}
+#endif // QT_NO_GESTURES
}
}
}
@@ -2556,6 +2566,7 @@ extern "C" LRESULT QT_WIN_CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wPa
}
result = false;
break;
+#ifndef QT_NO_GESTURES
#if !defined(Q_WS_WINCE) || defined(QT_WINCE_GESTURES)
case WM_GESTURE: {
GESTUREINFO gi;
@@ -2590,6 +2601,7 @@ extern "C" LRESULT QT_WIN_CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wPa
break;
}
#endif // !defined(Q_WS_WINCE) || defined(QT_WINCE_GESTURES)
+#endif // QT_NO_GESTURES
#ifndef QT_NO_CURSOR
case WM_SETCURSOR: {
QCursor *ovr = QApplication::overrideCursor();
@@ -3825,6 +3837,7 @@ bool QETWidget::translateCloseEvent(const MSG &)
return d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent);
}
+#ifndef QT_NO_GESTURES
bool QETWidget::translateGestureEvent(const MSG &, const GESTUREINFO &gi)
{
const QPoint widgetPos = QPoint(gi.ptsLocation.x, gi.ptsLocation.y);
@@ -3863,7 +3876,7 @@ bool QETWidget::translateGestureEvent(const MSG &, const GESTUREINFO &gi)
qt_sendSpontaneousEvent(widget, &event);
return true;
}
-
+#endif // QT_NO_GESTURES
void QApplication::setCursorFlashTime(int msecs)
{
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index 78fc704..3664743 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -5268,7 +5268,7 @@ bool QETWidget::translateConfigEvent(const XEvent *event)
if (isVisible() && data->crect.size() != oldSize) {
Q_ASSERT(d->extra->topextra);
- QWidgetBackingStore *bs = d->extra->topextra->backingStore;
+ QWidgetBackingStore *bs = d->extra->topextra->backingStore.data();
const bool hasStaticContents = bs && bs->hasStaticContents();
// If we have a backing store with static contents, we have to disable the top-level
// resize optimization in order to get invalidated regions for resized widgets.
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index 4953c48..eec9699 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -952,12 +952,14 @@ static int qCocoaViewCount = 0;
if (!QApplicationPrivate::tryModalHelper(qwidget, 0))
return;
+#ifndef QT_NO_GESTURES
QNativeGestureEvent qNGEvent;
qNGEvent.gestureType = QNativeGestureEvent::Zoom;
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
qNGEvent.percentage = [event magnification];
qt_sendSpontaneousEvent(qwidget, &qNGEvent);
+#endif // QT_NO_GESTURES
}
- (void)rotateWithEvent:(NSEvent *)event;
@@ -965,12 +967,14 @@ static int qCocoaViewCount = 0;
if (!QApplicationPrivate::tryModalHelper(qwidget, 0))
return;
+#ifndef QT_NO_GESTURES
QNativeGestureEvent qNGEvent;
qNGEvent.gestureType = QNativeGestureEvent::Rotate;
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
qNGEvent.percentage = -[event rotation];
qt_sendSpontaneousEvent(qwidget, &qNGEvent);
+#endif // QT_NO_GESTURES
}
- (void)swipeWithEvent:(NSEvent *)event;
@@ -978,6 +982,7 @@ static int qCocoaViewCount = 0;
if (!QApplicationPrivate::tryModalHelper(qwidget, 0))
return;
+#ifndef QT_NO_GESTURES
QNativeGestureEvent qNGEvent;
qNGEvent.gestureType = QNativeGestureEvent::Swipe;
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
@@ -991,6 +996,7 @@ static int qCocoaViewCount = 0;
else if ([event deltaY] == -1)
qNGEvent.angle = 270.0f;
qt_sendSpontaneousEvent(qwidget, &qNGEvent);
+#endif // QT_NO_GESTURES
}
- (void)beginGestureWithEvent:(NSEvent *)event;
@@ -998,11 +1004,13 @@ static int qCocoaViewCount = 0;
if (!QApplicationPrivate::tryModalHelper(qwidget, 0))
return;
+#ifndef QT_NO_GESTURES
QNativeGestureEvent qNGEvent;
qNGEvent.gestureType = QNativeGestureEvent::GestureBegin;
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
qt_sendSpontaneousEvent(qwidget, &qNGEvent);
+#endif // QT_NO_GESTURES
}
- (void)endGestureWithEvent:(NSEvent *)event;
@@ -1010,11 +1018,13 @@ static int qCocoaViewCount = 0;
if (!QApplicationPrivate::tryModalHelper(qwidget, 0))
return;
+#ifndef QT_NO_GESTURES
QNativeGestureEvent qNGEvent;
qNGEvent.gestureType = QNativeGestureEvent::GestureEnd;
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
qt_sendSpontaneousEvent(qwidget, &qNGEvent);
+#endif // QT_NO_GESTURES
}
- (void)frameDidChange:(NSNotification *)note
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index acf7184..92eed33 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -3421,9 +3421,11 @@ QDebug operator<<(QDebug dbg, const QEvent *e) {
case QEvent::ChildRemoved: n = n ? n : "ChildRemoved";
dbg.nospace() << "QChildEvent(" << n << ", " << (static_cast<const QChildEvent*>(e))->child();
return dbg.space();
+#ifndef QT_NO_GESTURES
case QEvent::Gesture:
n = "Gesture";
break;
+#endif
default:
dbg.nospace() << "QEvent(" << (const void *)e << ", type = " << e->type() << ')';
return dbg.space();
@@ -4254,6 +4256,7 @@ QTouchEvent::TouchPoint &QTouchEvent::TouchPoint::operator=(const QTouchEvent::T
return *this;
}
+#ifndef QT_NO_GESTURES
/*!
\class QGestureEvent
\since 4.6
@@ -4558,4 +4561,6 @@ const QGestureEventPrivate *QGestureEvent::d_func() const
*/
#endif
+#endif // QT_NO_GESTURES
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index 90242fe..9c70c02 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -62,7 +62,9 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Gui)
class QAction;
+#ifndef QT_NO_GESTURES
class QGesture;
+#endif
class Q_GUI_EXPORT QInputEvent : public QEvent
{
@@ -824,6 +826,7 @@ protected:
friend class QApplicationPrivate;
};
+#ifndef QT_NO_GESTURES
class QGesture;
class QGestureEventPrivate;
class Q_GUI_EXPORT QGestureEvent : public QEvent
@@ -875,6 +878,7 @@ private:
friend class QApplication;
friend class QGestureManager;
};
+#endif // QT_NO_GESTURES
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qevent_p.h b/src/gui/kernel/qevent_p.h
index 5c94a23..e323aa9 100644
--- a/src/gui/kernel/qevent_p.h
+++ b/src/gui/kernel/qevent_p.h
@@ -120,6 +120,7 @@ public:
qreal pressure;
};
+#ifndef QT_NO_GESTURES
class QNativeGestureEvent : public QEvent
{
public:
@@ -164,7 +165,7 @@ public:
QMap<Qt::GestureType, bool> accepted;
QMap<Qt::GestureType, QWidget *> targetWidgets;
};
-
+#endif // QT_NO_GESTURES
class QFileOpenEventPrivate
{
diff --git a/src/gui/kernel/qeventdispatcher_mac.mm b/src/gui/kernel/qeventdispatcher_mac.mm
index 0d93b9f..e26fbde 100644
--- a/src/gui/kernel/qeventdispatcher_mac.mm
+++ b/src/gui/kernel/qeventdispatcher_mac.mm
@@ -492,6 +492,7 @@ static bool IsMouseOrKeyEvent( NSEvent* event )
case NSOtherMouseDown:
case NSOtherMouseUp:
case NSOtherMouseDragged:
+#ifndef QT_NO_GESTURES
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
case NSEventTypeGesture: // touch events
case NSEventTypeMagnify:
@@ -500,6 +501,7 @@ static bool IsMouseOrKeyEvent( NSEvent* event )
case NSEventTypeBeginGesture:
case NSEventTypeEndGesture:
#endif
+#endif // QT_NO_GESTURES
result = true;
break;
diff --git a/src/gui/kernel/qgesture.cpp b/src/gui/kernel/qgesture.cpp
index 49bdea7..f5688f4 100644
--- a/src/gui/kernel/qgesture.cpp
+++ b/src/gui/kernel/qgesture.cpp
@@ -42,6 +42,8 @@
#include "qgesture.h"
#include "private/qgesture_p.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
/*!
@@ -725,3 +727,5 @@ void QTapAndHoldGesture::setPosition(const QPointF &value)
}
QT_END_NAMESPACE
+
+#endif // QT_NO_GESTURES
diff --git a/src/gui/kernel/qgesture.h b/src/gui/kernel/qgesture.h
index c9bdce6..8c10895 100644
--- a/src/gui/kernel/qgesture.h
+++ b/src/gui/kernel/qgesture.h
@@ -49,6 +49,8 @@
#include <QtCore/qrect.h>
#include <QtCore/qmetatype.h>
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_HEADER
Q_DECLARE_METATYPE(Qt::GestureState)
@@ -258,4 +260,6 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGesture::GestureCancelPolicy)
QT_END_HEADER
+#endif // QT_NO_GESTURES
+
#endif // QGESTURE_H
diff --git a/src/gui/kernel/qgesture_p.h b/src/gui/kernel/qgesture_p.h
index bf60f97..f5474c1 100644
--- a/src/gui/kernel/qgesture_p.h
+++ b/src/gui/kernel/qgesture_p.h
@@ -59,6 +59,8 @@
#include "qelapsedtimer.h"
#include "private/qobject_p.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
class QGesturePrivate : public QObjectPrivate
@@ -179,4 +181,6 @@ public:
QT_END_NAMESPACE
+#endif // QT_NO_GESTURES
+
#endif // QGESTURE_P_H
diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp
index 43facef..2af031b 100644
--- a/src/gui/kernel/qgesturemanager.cpp
+++ b/src/gui/kernel/qgesturemanager.cpp
@@ -66,6 +66,8 @@
# define DEBUG qDebug
#endif
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
QGestureManager::QGestureManager(QObject *parent)
@@ -684,6 +686,7 @@ void QGestureManager::recycle(QGesture *gesture)
if (recognizer) {
gesture->setGestureCancelPolicy(QGesture::CancelNone);
recognizer->reset(gesture);
+ m_activeGestures.remove(gesture);
} else {
cleanupGesturesForRemovedRecognizer(gesture);
}
@@ -691,4 +694,6 @@ void QGestureManager::recycle(QGesture *gesture)
QT_END_NAMESPACE
+#endif // QT_NO_GESTURES
+
#include "moc_qgesturemanager_p.cpp"
diff --git a/src/gui/kernel/qgesturemanager_p.h b/src/gui/kernel/qgesturemanager_p.h
index c452f49..747cb1a 100644
--- a/src/gui/kernel/qgesturemanager_p.h
+++ b/src/gui/kernel/qgesturemanager_p.h
@@ -58,6 +58,8 @@
#include "private/qwidget_p.h"
#include "qgesturerecognizer.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
class QBasicTimer;
@@ -143,4 +145,6 @@ private:
QT_END_NAMESPACE
+#endif // QT_NO_GESTURES
+
#endif // QGESTUREMANAGER_P_H
diff --git a/src/gui/kernel/qgesturerecognizer.cpp b/src/gui/kernel/qgesturerecognizer.cpp
index 9dcca17..3e23bbf 100644
--- a/src/gui/kernel/qgesturerecognizer.cpp
+++ b/src/gui/kernel/qgesturerecognizer.cpp
@@ -44,6 +44,8 @@
#include "private/qgesture_p.h"
#include "private/qgesturemanager_p.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
/*!
@@ -231,3 +233,5 @@ void QGestureRecognizer::unregisterRecognizer(Qt::GestureType type)
}
QT_END_NAMESPACE
+
+#endif // QT_NO_GESTURES
diff --git a/src/gui/kernel/qgesturerecognizer.h b/src/gui/kernel/qgesturerecognizer.h
index 3e17c99..5afb43f 100644
--- a/src/gui/kernel/qgesturerecognizer.h
+++ b/src/gui/kernel/qgesturerecognizer.h
@@ -45,6 +45,8 @@
#include <QtCore/qglobal.h>
#include <QtCore/qnamespace.h>
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -95,4 +97,6 @@ QT_END_NAMESPACE
QT_END_HEADER
+#endif // QT_NO_GESTURES
+
#endif // QGESTURERECOGNIZER_H
diff --git a/src/gui/kernel/qkeymapper_mac.cpp b/src/gui/kernel/qkeymapper_mac.cpp
index a7145d4..873b8f9 100644
--- a/src/gui/kernel/qkeymapper_mac.cpp
+++ b/src/gui/kernel/qkeymapper_mac.cpp
@@ -672,23 +672,7 @@ QKeyMapperPrivate::updateKeyboard()
#endif
if (iso639Code) {
keyboardInputLocale = QLocale(QCFString::toQString(iso639Code));
- QString monday = keyboardInputLocale.dayName(1);
- bool rtl = false;
- for (int i = 0; i < monday.length(); ++i) {
- switch (monday.at(i).direction()) {
- default:
- break;
- case QChar::DirR:
- case QChar::DirAL:
- case QChar::DirRLE:
- case QChar::DirRLO:
- rtl = true;
- break;
- }
- if (rtl)
- break;
- }
- keyboardInputDirection = rtl ? Qt::RightToLeft : Qt::LeftToRight;
+ keyboardInputDirection = keyboardInputLocale.textDirection();
} else {
keyboardInputLocale = QLocale::c();
keyboardInputDirection = Qt::LeftToRight;
diff --git a/src/gui/kernel/qkeymapper_qws.cpp b/src/gui/kernel/qkeymapper_qws.cpp
index 5b6b1c4..63bb46b 100644
--- a/src/gui/kernel/qkeymapper_qws.cpp
+++ b/src/gui/kernel/qkeymapper_qws.cpp
@@ -52,7 +52,7 @@ QT_USE_NAMESPACE
QKeyMapperPrivate::QKeyMapperPrivate()
{
keyboardInputLocale = QLocale::system();
- keyboardInputDirection = Qt::RightToLeft;
+ keyboardInputDirection = keyboardInputLocale.textDirection();
}
QKeyMapperPrivate::~QKeyMapperPrivate()
diff --git a/src/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp
index 807959c..825edbc 100644
--- a/src/gui/kernel/qkeymapper_x11.cpp
+++ b/src/gui/kernel/qkeymapper_x11.cpp
@@ -80,22 +80,15 @@ QT_BEGIN_NAMESPACE
(((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))
#endif
-void q_getLocaleAndDirection(QLocale *locale,
- Qt::LayoutDirection *direction,
- const QByteArray &layoutName,
- const QByteArray &variantName)
+QLocale q_getKeyboardLocale(const QByteArray &layoutName, const QByteArray &variantName)
{
int i = 0;
while (xkbLayoutData[i].layout != 0) {
- if (layoutName == xkbLayoutData[i].layout && variantName == xkbLayoutData[i].variant) {
- *locale = QLocale(xkbLayoutData[i].language, xkbLayoutData[i].country);
- *direction = xkbLayoutData[i].direction;
- return;
- }
+ if (layoutName == xkbLayoutData[i].layout && variantName == xkbLayoutData[i].variant)
+ return QLocale(xkbLayoutData[i].language, xkbLayoutData[i].country);
++i;
}
- *locale = QLocale::c();
- *direction = Qt::LeftToRight;
+ return QLocale::c();
}
#endif // QT_NO_XKB
@@ -523,10 +516,8 @@ void QKeyMapperPrivate::clearMappings()
// if (keyboardLayoutName.isEmpty())
// qWarning("Qt: unable to determine keyboard layout, please talk to qt-bugs@trolltech.com"); ?
- q_getLocaleAndDirection(&keyboardInputLocale,
- &keyboardInputDirection,
- layoutName,
- variantName);
+ keyboardInputLocale = q_getKeyboardLocale(layoutName, variantName);
+ keyboardInputDirection = keyboardInputLocale.textDirection();
#if 0
qDebug() << "keyboard input locale ="
diff --git a/src/gui/kernel/qkeymapper_x11_p.cpp b/src/gui/kernel/qkeymapper_x11_p.cpp
index 20fcc86..6308973 100644
--- a/src/gui/kernel/qkeymapper_x11_p.cpp
+++ b/src/gui/kernel/qkeymapper_x11_p.cpp
@@ -271,13 +271,13 @@ static struct {
// name = is:nodeadkeys, description = Iceland
{ "is", "nodeadkeys", Qt::LeftToRight, QLocale::Icelandic, QLocale::Iceland },
// name = il, description = Israel
- { "il", "", Qt::LeftToRight, QLocale::Hebrew, QLocale::Israel },
+ { "il", "", Qt::RightToLeft, QLocale::Hebrew, QLocale::Israel },
// name = il:lyx, description = Israel
- { "il", "lyx", Qt::LeftToRight, QLocale::Hebrew, QLocale::Israel },
+ { "il", "lyx", Qt::RightToLeft, QLocale::Hebrew, QLocale::Israel },
// name = il:si1452, description = Israel
- { "il", "si1452", Qt::LeftToRight, QLocale::Hebrew, QLocale::Israel },
+ { "il", "si1452", Qt::RightToLeft, QLocale::Hebrew, QLocale::Israel },
// name = il:phonetic, description = Israel
- { "il", "phonetic", Qt::LeftToRight, QLocale::Hebrew, QLocale::Israel },
+ { "il", "phonetic", Qt::RightToLeft, QLocale::Hebrew, QLocale::Israel },
// name = it, description = Italy
{ "it", "", Qt::LeftToRight, QLocale::Italian, QLocale::Italy },
// name = it:nodeadkeys, description = Italy
@@ -419,11 +419,11 @@ static struct {
// name = ch:fr_sundeadkeys, description = Switzerland
{ "ch", "fr_sundeadkeys", Qt::LeftToRight, QLocale::French, QLocale::Switzerland },
// name = sy, description = Syria
- { "sy", "", Qt::RightToLeft, QLocale::Arabic, QLocale::SyrianArabRepublic },
+ { "sy", "", Qt::RightToLeft, QLocale::Syriac, QLocale::SyrianArabRepublic },
// name = sy:syc, description = Syria
- { "sy", "syc", Qt::RightToLeft, QLocale::Arabic, QLocale::SyrianArabRepublic },
+ { "sy", "syc", Qt::RightToLeft, QLocale::Syriac, QLocale::SyrianArabRepublic },
// name = sy:syc_phonetic, description = Syria
- { "sy", "syc_phonetic", Qt::RightToLeft, QLocale::Arabic, QLocale::SyrianArabRepublic },
+ { "sy", "syc_phonetic", Qt::RightToLeft, QLocale::Syriac, QLocale::SyrianArabRepublic },
// name = tj, description = Tajikistan
{ "tj", "", Qt::LeftToRight, QLocale::Tajik, QLocale::Tajikistan },
// name = lk, description = Sri Lanka
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 931bc33..c2f275a 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -439,6 +439,10 @@ static const struct {
{ Qt::Key_MediaPrevious, QT_TRANSLATE_NOOP("QShortcut", "Media Previous") },
{ Qt::Key_MediaNext, QT_TRANSLATE_NOOP("QShortcut", "Media Next") },
{ Qt::Key_MediaRecord, QT_TRANSLATE_NOOP("QShortcut", "Media Record") },
+ //: Media player pause button
+ { Qt::Key_MediaPause, QT_TRANSLATE_NOOP("QShortcut", "Media Pause") },
+ //: Media player button to toggle between playing and paused
+ { Qt::Key_MediaTogglePlayPause, QT_TRANSLATE_NOOP("QShortcut", "Toggle Media Play/Pause") },
{ Qt::Key_HomePage, QT_TRANSLATE_NOOP("QShortcut", "Home Page") },
{ Qt::Key_Favorites, QT_TRANSLATE_NOOP("QShortcut", "Favorites") },
{ Qt::Key_Search, QT_TRANSLATE_NOOP("QShortcut", "Search") },
@@ -575,13 +579,25 @@ static const struct {
// --------------------------------------------------------------
// Device keys
- { Qt::Key_Context1, QT_TRANSLATE_NOOP("QShortcut", "Context1") },
- { Qt::Key_Context2, QT_TRANSLATE_NOOP("QShortcut", "Context2") },
- { Qt::Key_Context3, QT_TRANSLATE_NOOP("QShortcut", "Context3") },
- { Qt::Key_Context4, QT_TRANSLATE_NOOP("QShortcut", "Context4") },
- { Qt::Key_Call, QT_TRANSLATE_NOOP("QShortcut", "Call") },
- { Qt::Key_Hangup, QT_TRANSLATE_NOOP("QShortcut", "Hangup") },
- { Qt::Key_Flip, QT_TRANSLATE_NOOP("QShortcut", "Flip") },
+ { Qt::Key_Context1, QT_TRANSLATE_NOOP("QShortcut", "Context1") },
+ { Qt::Key_Context2, QT_TRANSLATE_NOOP("QShortcut", "Context2") },
+ { Qt::Key_Context3, QT_TRANSLATE_NOOP("QShortcut", "Context3") },
+ { Qt::Key_Context4, QT_TRANSLATE_NOOP("QShortcut", "Context4") },
+ //: Button to start a call (note: a separate button is used to end the call)
+ { Qt::Key_Call, QT_TRANSLATE_NOOP("QShortcut", "Call") },
+ //: Button to end a call (note: a separate button is used to start the call)
+ { Qt::Key_Hangup, QT_TRANSLATE_NOOP("QShortcut", "Hangup") },
+ //: Button that will hang up if we're in call, or make a call if we're not.
+ { Qt::Key_ToggleCallHangup, QT_TRANSLATE_NOOP("QShortcut", "Toggle Call/Hangup") },
+ { Qt::Key_Flip, QT_TRANSLATE_NOOP("QShortcut", "Flip") },
+ //: Button to trigger voice dialling
+ { Qt::Key_VoiceDial, QT_TRANSLATE_NOOP("QShortcut", "Voice Dial") },
+ //: Button to redial the last number called
+ { Qt::Key_LastNumberRedial, QT_TRANSLATE_NOOP("QShortcut", "Last Number Redial") },
+ //: Button to trigger the camera shutter (take a picture)
+ { Qt::Key_Camera, QT_TRANSLATE_NOOP("QShortcut", "Camera Shutter") },
+ //: Button to focus the camera
+ { Qt::Key_CameraFocus, QT_TRANSLATE_NOOP("QShortcut", "Camera Focus") },
// --------------------------------------------------------------
// Japanese keyboard support
diff --git a/src/gui/kernel/qmacgesturerecognizer_mac.mm b/src/gui/kernel/qmacgesturerecognizer_mac.mm
index fba839b..0ccbb52 100644
--- a/src/gui/kernel/qmacgesturerecognizer_mac.mm
+++ b/src/gui/kernel/qmacgesturerecognizer_mac.mm
@@ -47,6 +47,8 @@
#include "qwidget.h"
#include "qdebug.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
QMacSwipeGestureRecognizer::QMacSwipeGestureRecognizer()
@@ -260,3 +262,5 @@ void QMacPanGestureRecognizer::reset(QGesture *gesture)
#endif // QT_MAC_USE_COCOA
QT_END_NAMESPACE
+
+#endif // QT_NO_GESTURES
diff --git a/src/gui/kernel/qmacgesturerecognizer_mac_p.h b/src/gui/kernel/qmacgesturerecognizer_mac_p.h
index dd8a150..f48c160 100644
--- a/src/gui/kernel/qmacgesturerecognizer_mac_p.h
+++ b/src/gui/kernel/qmacgesturerecognizer_mac_p.h
@@ -57,6 +57,8 @@
#include "qpoint.h"
#include "qgesturerecognizer.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
class QMacSwipeGestureRecognizer : public QGestureRecognizer
@@ -99,4 +101,6 @@ private:
QT_END_NAMESPACE
+#endif // QT_NO_GESTURES
+
#endif // QMACSWIPEGESTURERECOGNIZER_MAC_P_H
diff --git a/src/gui/kernel/qstandardgestures.cpp b/src/gui/kernel/qstandardgestures.cpp
index a575717..6960838 100644
--- a/src/gui/kernel/qstandardgestures.cpp
+++ b/src/gui/kernel/qstandardgestures.cpp
@@ -47,6 +47,8 @@
#include "qabstractscrollarea.h"
#include "qdebug.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
QPanGestureRecognizer::QPanGestureRecognizer()
@@ -563,3 +565,5 @@ void QTapAndHoldGestureRecognizer::reset(QGesture *state)
}
QT_END_NAMESPACE
+
+#endif // QT_NO_GESTURES
diff --git a/src/gui/kernel/qstandardgestures_p.h b/src/gui/kernel/qstandardgestures_p.h
index 64505d8..da73b85 100644
--- a/src/gui/kernel/qstandardgestures_p.h
+++ b/src/gui/kernel/qstandardgestures_p.h
@@ -56,6 +56,8 @@
#include "qgesturerecognizer.h"
#include "private/qgesture_p.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
class QPanGestureRecognizer : public QGestureRecognizer
@@ -110,4 +112,6 @@ public:
QT_END_NAMESPACE
+#endif // QT_NO_GESTURES
+
#endif // QSTANDARDGESTURES_P_H
diff --git a/src/gui/kernel/qwhatsthis.cpp b/src/gui/kernel/qwhatsthis.cpp
index 6181b62..ff4641e 100644
--- a/src/gui/kernel/qwhatsthis.cpp
+++ b/src/gui/kernel/qwhatsthis.cpp
@@ -143,7 +143,7 @@ QT_BEGIN_NAMESPACE
\sa QToolTip
*/
-Q_DECL_IMPORT extern void qDeleteInEventHandler(QObject *o);
+Q_CORE_EXPORT void qDeleteInEventHandler(QObject *o);
class QWhatsThat : public QWidget
{
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index b5879ae..492954a 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -67,6 +67,7 @@
# include "qt_mac_p.h"
# include "qt_cocoa_helpers_mac_p.h"
# include "qmainwindow.h"
+# include "qtoolbar.h"
#endif
#if defined(Q_WS_QWS)
# include "qwsdisplay_qws.h"
@@ -161,6 +162,51 @@ static inline bool hasBackingStoreSupport()
extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); // qapplication.cpp
extern QDesktopWidget *qt_desktopWidget; // qapplication.cpp
+
+QRefCountedWidgetBackingStore::QRefCountedWidgetBackingStore()
+ : m_ptr(0)
+ , m_count(0)
+{
+
+}
+
+QRefCountedWidgetBackingStore::~QRefCountedWidgetBackingStore()
+{
+ delete m_ptr;
+}
+
+void QRefCountedWidgetBackingStore::create(QWidget *widget)
+{
+ destroy();
+ m_ptr = new QWidgetBackingStore(widget);
+ m_count = 0;
+}
+
+void QRefCountedWidgetBackingStore::destroy()
+{
+ delete m_ptr;
+ m_ptr = 0;
+ m_count = 0;
+}
+
+void QRefCountedWidgetBackingStore::ref()
+{
+ Q_ASSERT(m_ptr);
+ ++m_count;
+}
+
+void QRefCountedWidgetBackingStore::deref()
+{
+ if (m_count) {
+ Q_ASSERT(m_ptr);
+ if (0 == --m_count) {
+ delete m_ptr;
+ m_ptr = 0;
+ }
+ }
+}
+
+
QWidgetPrivate::QWidgetPrivate(int version)
: QObjectPrivate(version)
, extra(0)
@@ -202,7 +248,9 @@ QWidgetPrivate::QWidgetPrivate(int version)
, picture(0)
#elif defined(Q_WS_WIN)
, noPaintOnScreen(0)
+ #ifndef QT_NO_GESTURES
, nativeGesturePanEnabled(0)
+ #endif
#elif defined(Q_WS_MAC)
, needWindowChange(0)
, hasAlienChildren(0)
@@ -1348,11 +1396,9 @@ void QWidget::create(WId window, bool initializeWindow, bool destroyOldWindow)
// a real toplevel window needs a backing store
if (isWindow() && windowType() != Qt::Desktop) {
- delete d->topData()->backingStore;
- // QWidgetBackingStore will check this variable, hence it must be 0
- d->topData()->backingStore = 0;
+ d->topData()->backingStore.destroy();
if (hasBackingStoreSupport())
- d->topData()->backingStore = new QWidgetBackingStore(this);
+ d->topData()->backingStore.create(this);
}
d->setModal_sys();
@@ -1397,8 +1443,10 @@ QWidget::~QWidget()
qWarning("QWidget: %s (%s) deleted while being painted", className(), name());
#endif
+#ifndef QT_NO_GESTURES
foreach (Qt::GestureType type, d->gestureContext.keys())
ungrabGesture(type);
+#endif
// force acceptDrops false before winId is destroyed.
d->registerDropSite(false);
@@ -1478,8 +1526,7 @@ QWidget::~QWidget()
// the backing store will delete its window surface, which may or may
// not have a reference to this widget that will be used later to
// notify the window it no longer has a surface.
- delete d->extra->topextra->backingStore;
- d->extra->topextra->backingStore = 0;
+ d->extra->topextra->backingStore.destroy();
}
#endif
if (QWidgetBackingStore *bs = d->maybeBackingStore()) {
@@ -1576,7 +1623,6 @@ void QWidgetPrivate::createTLExtra()
QTLWExtra* x = extra->topextra = new QTLWExtra;
x->icon = 0;
x->iconPixmap = 0;
- x->backingStore = 0;
x->windowSurface = 0;
x->sharedPainter = 0;
x->incw = x->inch = 0;
@@ -1660,7 +1706,7 @@ void QWidgetPrivate::deleteExtra()
#endif
if (extra->topextra) {
deleteTLSysExtra();
- delete extra->topextra->backingStore;
+ extra->topextra->backingStore.destroy();
delete extra->topextra->icon;
delete extra->topextra->iconPixmap;
#if defined(Q_WS_QWS) && !defined(QT_NO_QWS_MANAGER)
@@ -4783,6 +4829,11 @@ void QWidget::setLayoutDirection(Qt::LayoutDirection direction)
{
Q_D(QWidget);
+ if (direction == Qt::LayoutDirectionAuto) {
+ unsetLayoutDirection();
+ return;
+ }
+
setAttribute(Qt::WA_SetLayoutDirection);
d->setLayoutDirection_helper(direction);
}
@@ -8539,9 +8590,11 @@ bool QWidget::event(QEvent *event)
#endif // Q_WS_MAC
break;
}
+#ifndef QT_NO_GESTURES
case QEvent::Gesture:
event->ignore();
break;
+#endif
#ifndef QT_NO_PROPERTIES
case QEvent::DynamicPropertyChange: {
const QByteArray &propName = static_cast<QDynamicPropertyChangeEvent *>(event)->propertyName();
@@ -9664,46 +9717,58 @@ QWidget *QWidget::childAt(const QPoint &p) const
QWidget *QWidgetPrivate::childAt_helper(const QPoint &p, bool ignoreChildrenInDestructor) const
{
- Q_Q(const QWidget);
+ if (children.isEmpty())
+ return 0;
+
#ifdef Q_WS_MAC
+ Q_Q(const QWidget);
+ // Unified tool bars on the Mac require special handling since they live outside
+ // QMainWindow's geometry(). See commit: 35667fd45ada49269a5987c235fdedfc43e92bb8
bool includeFrame = q->isWindow() && qobject_cast<const QMainWindow *>(q)
&& static_cast<const QMainWindow *>(q)->unifiedTitleAndToolBarOnMac();
+ if (includeFrame)
+ return childAtRecursiveHelper(p, ignoreChildrenInDestructor, includeFrame);
#endif
- if (
-#ifdef Q_WS_MAC
- !includeFrame &&
-#endif
- !q->rect().contains(p))
+ if (!pointInsideRectAndMask(p))
return 0;
+ return childAtRecursiveHelper(p, ignoreChildrenInDestructor);
+}
- 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)
-#ifdef Q_WS_MAC
- || (includeFrame && w->geometry().contains(qt_mac_nativeMapFromParent(w, p)))
+QWidget *QWidgetPrivate::childAtRecursiveHelper(const QPoint &p, bool ignoreChildrenInDestructor, bool includeFrame) const
+{
+#ifndef Q_WS_MAC
+ Q_UNUSED(includeFrame);
#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
- // the widget has no mask then the WMouseNoMask flag has no
- // effect
- if (w->testAttribute(Qt::WA_MouseNoMask) || w->mask().contains(childPoint)
- || w->mask().isEmpty())
- return w;
+ for (int i = children.size() - 1; i >= 0; --i) {
+ QWidget *child = qobject_cast<QWidget *>(children.at(i));
+ if (!child || child->isWindow() || child->isHidden() || child->testAttribute(Qt::WA_TransparentForMouseEvents)
+ || (ignoreChildrenInDestructor && child->data->in_destructor)) {
+ continue;
}
+
+ // Map the point 'p' from parent coordinates to child coordinates.
+ QPoint childPoint = p;
+#ifdef Q_WS_MAC
+ // 'includeFrame' is true if the child's parent is a top-level QMainWindow with an unified tool bar.
+ // An unified tool bar on the Mac lives outside QMainWindow's geometry(), so a normal
+ // QWidget::mapFromParent won't do the trick.
+ if (includeFrame && qobject_cast<QToolBar *>(child))
+ childPoint = qt_mac_nativeMapFromParent(child, p);
+ else
+#endif
+ childPoint -= child->data->crect.topLeft();
+
+ // Check if the point hits the child.
+ if (!child->d_func()->pointInsideRectAndMask(childPoint))
+ continue;
+
+ // Do the same for the child's descendants.
+ if (QWidget *w = child->d_func()->childAtRecursiveHelper(childPoint, ignoreChildrenInDestructor))
+ return w;
+
+ // We have found our target; namely the child at position 'p'.
+ return child;
}
return 0;
}
@@ -11957,6 +12022,7 @@ QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const
Synonym for QList<QWidget *>.
*/
+#ifndef QT_NO_GESTURES
/*!
Subscribes the widget to a given \a gesture with specific \a flags.
@@ -11984,7 +12050,7 @@ void QWidget::ungrabGesture(Qt::GestureType gesture)
manager->cleanupCachedGestures(this, gesture);
}
}
-
+#endif // QT_NO_GESTURES
/*!
\typedef WId
diff --git a/src/gui/kernel/qwidget.h b/src/gui/kernel/qwidget.h
index e12148b..941bd68 100644
--- a/src/gui/kernel/qwidget.h
+++ b/src/gui/kernel/qwidget.h
@@ -360,8 +360,10 @@ public:
void setGraphicsEffect(QGraphicsEffect *effect);
#endif //QT_NO_GRAPHICSEFFECT
+#ifndef QT_NO_GESTURES
void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags());
void ungrabGesture(Qt::GestureType type);
+#endif
public Q_SLOTS:
void setWindowTitle(const QString &);
@@ -742,8 +744,10 @@ private:
friend class QGraphicsProxyWidgetPrivate;
friend class QStyleSheetStyle;
friend struct QWidgetExceptionCleaner;
+#ifndef QT_NO_GESTURES
friend class QGestureManager;
friend class QWinNativePanGestureRecognizer;
+#endif // QT_NO_GESTURES
friend class QWidgetEffectSourcePrivate;
#ifdef Q_WS_MAC
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index f12c956..280712a 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -752,6 +752,7 @@ static OSWindowRef qt_mac_create_window(QWidget *, WindowClass wclass, WindowAtt
return window;
}
+#ifndef QT_NO_GESTURES
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
/* We build the release package against the 10.4 SDK.
So, to enable gestures for applications running on
@@ -768,6 +769,7 @@ enum {
kEventParamMagnificationAmount = 'magn'
};
#endif
+#endif // QT_NO_GESTURES
// window events
static EventTypeSpec window_events[] = {
@@ -1076,6 +1078,7 @@ OSStatus QWidgetPrivate::qt_window_event(EventHandlerCallRef er, EventRef event,
handled_event = false;
break; }
+#ifndef QT_NO_GESTURES
case kEventClassGesture: {
// First, find the widget that was under
// the mouse when the gesture happened:
@@ -1142,6 +1145,7 @@ OSStatus QWidgetPrivate::qt_window_event(EventHandlerCallRef er, EventRef event,
QApplication::sendSpontaneousEvent(widget, &qNGEvent);
break; }
+#endif // QT_NO_GESTURES
default:
handled_event = false;
@@ -2684,6 +2688,7 @@ QWidget::macCGHandle() const
void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
{
Q_D(QWidget);
+ d->aboutToDestroy();
if (!isWindow() && parentWidget())
parentWidget()->d_func()->invalidateBuffer(d->effectiveRectFor(geometry()));
d->deactivateWidgetCleanup();
@@ -3990,10 +3995,10 @@ static void qt_mac_update_widget_position(QWidget *q, QRect oldRect, QRect newRe
(oldRect.isValid() == false || newRect.isValid() == false) ||
// the position update is a part of a drag-and-drop operation
- QDragManager::self()->object ||
-
- // we are on Panther (no HIViewSetNeedsDisplayInRect)
- QSysInfo::MacintoshVersion < QSysInfo::MV_10_4
+ QDragManager::self()->object ||
+
+ // we are on Panther (no HIViewSetNeedsDisplayInRect)
+ QSysInfo::MacintoshVersion < QSysInfo::MV_10_4
){
HIViewSetFrame(view, &bounds);
return;
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index 3f494d8..587d7fb 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -110,13 +110,53 @@ class QWidgetItemV2;
class QStyle;
+class Q_AUTOTEST_EXPORT QRefCountedWidgetBackingStore
+{
+public:
+ QRefCountedWidgetBackingStore();
+ ~QRefCountedWidgetBackingStore();
+
+ void create(QWidget *tlw);
+ void destroy();
+
+ void ref();
+ void deref();
+
+ inline QWidgetBackingStore* data()
+ {
+ return m_ptr;
+ }
+
+ inline QWidgetBackingStore* operator->()
+ {
+ return m_ptr;
+ }
+
+ inline QWidgetBackingStore& operator*()
+ {
+ return *m_ptr;
+ }
+
+ inline operator bool() const
+ {
+ return (0 != m_ptr);
+ }
+
+private:
+ Q_DISABLE_COPY(QRefCountedWidgetBackingStore)
+
+private:
+ QWidgetBackingStore* m_ptr;
+ int m_count;
+};
+
struct QTLWExtra {
// *************************** Cross-platform variables *****************************
// Regular pointers (keep them together to avoid gaps on 64 bits architectures).
QIcon *icon; // widget icon
QPixmap *iconPixmap;
- QWidgetBackingStore *backingStore;
+ QRefCountedWidgetBackingStore backingStore;
QWindowSurface *windowSurface;
QPainter *sharedPainter;
@@ -502,13 +542,20 @@ public:
bool setMinimumSize_helper(int &minw, int &minh);
bool setMaximumSize_helper(int &maxw, int &maxh);
void setConstraints_sys();
+ bool pointInsideRectAndMask(const QPoint &) const;
QWidget *childAt_helper(const QPoint &, bool) const;
+ QWidget *childAtRecursiveHelper(const QPoint &p, bool, bool includeFrame = false) const;
void updateGeometry_helper(bool forceUpdate);
void getLayoutItemMargins(int *left, int *top, int *right, int *bottom) const;
void setLayoutItemMargins(int left, int top, int right, int bottom);
void setLayoutItemMargins(QStyle::SubElement element, const QStyleOption *opt = 0);
+ // aboutToDestroy() is called just before the contents of
+ // QWidget::destroy() is executed. It's used to signal QWidget
+ // sub-classes that their internals are about to be released.
+ virtual void aboutToDestroy() {}
+
QInputContext *inputContext() const;
inline QWidget *effectiveFocusWidget() {
QWidget *w = q_func();
@@ -685,7 +732,9 @@ public:
#ifndef QT_NO_ACTION
QList<QAction*> actions;
#endif
+#ifndef QT_NO_GESTURES
QMap<Qt::GestureType, Qt::GestureFlags> gestureContext;
+#endif
// Bit fields.
uint high_attributes[4]; // the low ones are in QWidget::widget_attributes
@@ -714,8 +763,9 @@ public:
void updateX11AcceptFocus();
#elif defined(Q_WS_WIN) // <--------------------------------------------------------- WIN
uint noPaintOnScreen : 1; // see qwidget_win.cpp ::paintEngine()
+#ifndef QT_NO_GESTURES
uint nativeGesturePanEnabled : 1;
-
+#endif
bool shouldShowMaximizeButton();
void winUpdateIsOpaque();
void reparentChildren();
@@ -925,11 +975,18 @@ inline void QWidgetPrivate::setSharedPainter(QPainter *painter)
x->sharedPainter = painter;
}
+inline bool QWidgetPrivate::pointInsideRectAndMask(const QPoint &p) const
+{
+ Q_Q(const QWidget);
+ return q->rect().contains(p) && (!extra || !extra->hasMask || q->testAttribute(Qt::WA_MouseNoMask)
+ || extra->mask.contains(p));
+}
+
inline QWidgetBackingStore *QWidgetPrivate::maybeBackingStore() const
{
Q_Q(const QWidget);
QTLWExtra *x = q->window()->d_func()->maybeTopData();
- return x ? x->backingStore : 0;
+ return x ? x->backingStore.data() : 0;
}
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qwidget_qws.cpp b/src/gui/kernel/qwidget_qws.cpp
index b827e8b..3145136 100644
--- a/src/gui/kernel/qwidget_qws.cpp
+++ b/src/gui/kernel/qwidget_qws.cpp
@@ -256,7 +256,7 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool /*destro
void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
{
Q_D(QWidget);
-
+ d->aboutToDestroy();
if (!isWindow() && parentWidget())
parentWidget()->d_func()->invalidateBuffer(d->effectiveRectFor(geometry()));
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 02e7cb8..68f9470 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -433,6 +433,7 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de
// Request mouse move events.
drawableWindow->PointerFilter(EPointerFilterEnterExit
| EPointerFilterMove | EPointerFilterDrag, 0);
+ drawableWindow->EnableVisibilityChangeEvents();
if (q->isVisible() && q->testAttribute(Qt::WA_Mapped)) {
activateSymbianWindow(control.data());
@@ -487,11 +488,8 @@ void QWidgetPrivate::show_sys()
&& !S60->buttonGroupContainer() && !S60->statusPane()) {
bool isFullscreen = q->windowState() & Qt::WindowFullScreen;
- bool cbaRequested = q->windowFlags() & Qt::WindowSoftkeysVisibleHint;
- // If the window is fullscreen and has not explicitly requested that the CBA be visible
- // we delay the creation even more.
- if ((!isFullscreen || cbaRequested) && !q->testAttribute(Qt::WA_DontShowOnScreen)) {
+ if (!q->testAttribute(Qt::WA_DontShowOnScreen)) {
// Create the status pane and CBA here
CEikAppUi *ui = static_cast<CEikAppUi *>(S60->appUi());
@@ -911,14 +909,12 @@ void QWidgetPrivate::registerDropSite(bool /* on */)
void QWidgetPrivate::createTLSysExtra()
{
- extra->topextra->backingStore = 0;
extra->topextra->inExpose = 0;
}
void QWidgetPrivate::deleteTLSysExtra()
{
- delete extra->topextra->backingStore;
- extra->topextra->backingStore = 0;
+ extra->topextra->backingStore.destroy();
}
void QWidgetPrivate::createSysExtra()
@@ -1181,6 +1177,7 @@ void QWidget::setWindowState(Qt::WindowStates newstate)
void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
{
Q_D(QWidget);
+ d->aboutToDestroy();
if (!isWindow() && parentWidget())
parentWidget()->d_func()->invalidateBuffer(geometry());
d->deactivateWidgetCleanup();
diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp
index 5482da3..9c65aa0 100644
--- a/src/gui/kernel/qwidget_win.cpp
+++ b/src/gui/kernel/qwidget_win.cpp
@@ -544,6 +544,7 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
{
Q_D(QWidget);
+ d->aboutToDestroy();
if (!isWindow() && parentWidget())
parentWidget()->d_func()->invalidateBuffer(d->effectiveRectFor(geometry()));
d->deactivateWidgetCleanup();
@@ -2075,7 +2076,7 @@ void QWidgetPrivate::registerTouchWindow()
void QWidgetPrivate::winSetupGestures()
{
-#if !defined(QT_NO_NATIVE_GESTURES)
+#if !defined(QT_NO_GESTURES) && !defined(QT_NO_NATIVE_GESTURES)
Q_Q(QWidget);
if (!q || !q->isVisible() || !nativeGesturePanEnabled)
return;
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index 43f510c..e01489f 100644
--- a/src/gui/kernel/qwidget_x11.cpp
+++ b/src/gui/kernel/qwidget_x11.cpp
@@ -1023,6 +1023,7 @@ bool QWidgetPrivate::isBackgroundInherited() const
void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
{
Q_D(QWidget);
+ d->aboutToDestroy();
if (!isWindow() && parentWidget())
parentWidget()->d_func()->invalidateBuffer(d->effectiveRectFor(geometry()));
d->deactivateWidgetCleanup();
diff --git a/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp b/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp
index 0bddbf6..780de5d 100644
--- a/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp
+++ b/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp
@@ -50,6 +50,8 @@
#include "private/qapplication_p.h"
#include "private/qwidget_p.h"
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
#if !defined(QT_NO_NATIVE_GESTURES)
@@ -127,3 +129,5 @@ void QWinNativePanGestureRecognizer::reset(QGesture *state)
#endif // QT_NO_NATIVE_GESTURES
QT_END_NAMESPACE
+
+#endif // QT_NO_GESTURES
diff --git a/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h b/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h
index 146b067..64addeb 100644
--- a/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h
+++ b/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h
@@ -54,6 +54,7 @@
//
#include <QGestureRecognizer>
+
#include <objbase.h>
class IInkRectangle;
@@ -87,6 +88,8 @@ DECLARE_INTERFACE_(IInkTablets, IDispatch)
STDMETHOD(IsPacketPropertySupported)(THIS_ BSTR packetPropertyName, VARIANT_BOOL *Supported) PURE;
};
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
#if !defined(QT_NO_NATIVE_GESTURES)
@@ -105,4 +108,6 @@ public:
QT_END_NAMESPACE
+#endif // QT_NO_GESTURES
+
#endif // QWINNATIVEPANGESTURERECOGNIZER_WIN_P_H
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp
index f9cd59b..83751ed 100644
--- a/src/gui/painting/qbackingstore.cpp
+++ b/src/gui/painting/qbackingstore.cpp
@@ -909,7 +909,7 @@ void QWidgetPrivate::moveRect(const QRect &rect, int dx, int dy)
QWidgetPrivate *pd = pw->d_func();
QRect clipR(pd->clipRect());
#ifdef Q_WS_QWS
- QWidgetBackingStore *wbs = x->backingStore;
+ QWidgetBackingStore *wbs = x->backingStore.data();
QWSWindowSurface *surface = static_cast<QWSWindowSurface*>(wbs->windowSurface);
clipR = clipR.intersected(surface->clipRegion().translated(-toplevelOffset).boundingRect());
#endif
@@ -939,7 +939,7 @@ void QWidgetPrivate::moveRect(const QRect &rect, int dx, int dy)
invalidateBuffer((newRect & clipR).translated(-data.crect.topLeft()));
} else {
- QWidgetBackingStore *wbs = x->backingStore;
+ QWidgetBackingStore *wbs = x->backingStore.data();
QRegion childExpose(newRect & clipR);
if (sourceRect.isValid() && wbs->bltRect(sourceRect, dx, dy, pw))
@@ -982,7 +982,7 @@ void QWidgetPrivate::scrollRect(const QRect &rect, int dx, int dy)
if (x->inTopLevelResize)
return;
- QWidgetBackingStore *wbs = x->backingStore;
+ QWidgetBackingStore *wbs = x->backingStore.data();
if (!wbs)
return;
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index b468b11..d3061d8 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -48,6 +48,7 @@
#include "qline.h"
#include "qdebug.h"
#include <QtCore/qcoreapplication.h>
+#include "private/qstylehelper_p.h"
QT_BEGIN_NAMESPACE
@@ -96,9 +97,11 @@ const uchar *qt_patternForBrush(int brushStyle, bool invert)
QPixmap qt_pixmapForBrush(int brushStyle, bool invert)
{
+
QPixmap pm;
- QString key = QLatin1String("$qt-brush$") + QString::number(brushStyle)
- + QString::number((int)invert);
+ QString key = QLatin1Literal("$qt-brush$")
+ % HexString<uint>(brushStyle)
+ % QLatin1Char(invert ? '1' : '0');
if (!QPixmapCache::find(key, pm)) {
pm = QBitmap::fromData(QSize(8, 8), qt_patternForBrush(brushStyle, invert),
QImage::Format_MonoLSB);
diff --git a/src/gui/painting/qdrawutil.cpp b/src/gui/painting/qdrawutil.cpp
index 3ce95ef..11ea6d5 100644
--- a/src/gui/painting/qdrawutil.cpp
+++ b/src/gui/painting/qdrawutil.cpp
@@ -48,6 +48,7 @@
#include <private/qpaintengineex_p.h>
#include <qvarlengtharray.h>
#include <qmath.h>
+#include <private/qstylehelper_p.h>
QT_BEGIN_NAMESPACE
@@ -1018,7 +1019,9 @@ void qDrawItem(QPainter *p, Qt::GUIStyle gs,
;
#ifndef QT_NO_IMAGE_HEURISTIC_MASK
} else { // color pixmap, no mask
- QString k = QString::fromLatin1("$qt-drawitem-%1").arg(pm.cacheKey());
+ QString k = QLatin1Literal("$qt-drawitem")
+ % HexString<qint64>(pm.cacheKey());
+
if (!QPixmapCache::find(k, pm)) {
pm = pm.createHeuristicMask();
pm.setMask((QBitmap&)pm);
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 48974e8..08e14fb 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -68,6 +68,7 @@
// #include <private/qrasterizer_p.h>
#include <private/qimage_p.h>
#include <private/qstatictext_p.h>
+#include "qmemrotate_p.h"
#include "qpaintengine_raster_p.h"
// #include "qbezier_p.h"
@@ -2521,6 +2522,58 @@ QRectF qt_mapRect_non_normalizing(const QRectF &r, const QTransform &t)
return QRectF(r.topLeft() * t, r.bottomRight() * t);
}
+namespace {
+ enum RotationType {
+ Rotation90,
+ Rotation180,
+ Rotation270,
+ NoRotation
+ };
+
+ inline RotationType qRotationType(const QTransform &transform)
+ {
+ QTransform::TransformationType type = transform.type();
+
+ if (type > QTransform::TxRotate)
+ return NoRotation;
+
+ if (type == QTransform::TxRotate && qFuzzyIsNull(transform.m11()) && qFuzzyCompare(transform.m12(), qreal(-1))
+ && qFuzzyCompare(transform.m21(), qreal(1)) && qFuzzyIsNull(transform.m22()))
+ return Rotation90;
+
+ if (type == QTransform::TxScale && qFuzzyCompare(transform.m11(), qreal(-1)) && qFuzzyIsNull(transform.m12())
+ && qFuzzyIsNull(transform.m21()) && qFuzzyCompare(transform.m22(), qreal(-1)))
+ return Rotation180;
+
+ if (type == QTransform::TxRotate && qFuzzyIsNull(transform.m11()) && qFuzzyCompare(transform.m12(), qreal(1))
+ && qFuzzyCompare(transform.m21(), qreal(-1)) && qFuzzyIsNull(transform.m22()))
+ return Rotation270;
+
+ return NoRotation;
+ }
+
+ template <typename T> void memRotate(RotationType type, const T *srcBase, int w, int h, int sbpl, T *dstBase, int dbpl)
+ {
+ switch (type) {
+ case Rotation90:
+ qt_memrotate90(srcBase, w, h, sbpl, dstBase, dbpl);
+ break;
+ case Rotation180:
+ qt_memrotate180(srcBase, w, h, sbpl, dstBase, dbpl);
+ break;
+ case Rotation270:
+ qt_memrotate270(srcBase, w, h, sbpl, dstBase, dbpl);
+ break;
+ case NoRotation:
+ break;
+ }
+ }
+
+ inline bool isPixelAligned(const QRectF &rect) {
+ return QRectF(rect.toRect()) == rect;
+ }
+}
+
/*!
\reimp
*/
@@ -2582,6 +2635,58 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
const QClipData *clip = d->clip();
+ if (s->matrix.type() > QTransform::TxTranslate
+ && !stretch_sr
+ && (!clip || clip->hasRectClip)
+ && s->intOpacity == 256
+ && (d->rasterBuffer->compositionMode == QPainter::CompositionMode_SourceOver
+ || d->rasterBuffer->compositionMode == QPainter::CompositionMode_Source)
+ && d->rasterBuffer->format == img.format()
+ && (d->rasterBuffer->format == QImage::Format_RGB16
+ || d->rasterBuffer->format == QImage::Format_RGB32
+ || (d->rasterBuffer->format == QImage::Format_ARGB32_Premultiplied
+ && d->rasterBuffer->compositionMode == QPainter::CompositionMode_Source)))
+ {
+ RotationType rotationType = qRotationType(s->matrix);
+
+ if (rotationType != NoRotation && img.rect().contains(sr.toAlignedRect())) {
+ QRectF transformedTargetRect = s->matrix.mapRect(r);
+
+ if ((!(s->renderHints & QPainter::SmoothPixmapTransform) && !(s->renderHints & QPainter::Antialiasing))
+ || (isPixelAligned(transformedTargetRect) && isPixelAligned(sr)))
+ {
+ QRect clippedTransformedTargetRect = transformedTargetRect.toRect().intersected(clip ? clip->clipRect : d->deviceRect);
+ if (clippedTransformedTargetRect.isNull())
+ return;
+
+ QRectF clippedTargetRect = s->matrix.inverted().mapRect(QRectF(clippedTransformedTargetRect));
+
+ QRect clippedSourceRect
+ = QRectF(sr.x() + clippedTargetRect.x() - r.x(), sr.y() + clippedTargetRect.y() - r.y(),
+ clippedTargetRect.width(), clippedTargetRect.height()).toRect();
+
+ uint dbpl = d->rasterBuffer->bytesPerLine();
+ uint sbpl = img.bytesPerLine();
+
+ uchar *dst = d->rasterBuffer->buffer();
+ uint bpp = img.depth() >> 3;
+
+ const uchar *srcBase = img.bits() + clippedSourceRect.y() * sbpl + clippedSourceRect.x() * bpp;
+ uchar *dstBase = dst + clippedTransformedTargetRect.y() * dbpl + clippedTransformedTargetRect.x() * bpp;
+
+ uint cw = clippedSourceRect.width();
+ uint ch = clippedSourceRect.height();
+
+ if (d->rasterBuffer->format == QImage::Format_RGB16)
+ memRotate(rotationType, (quint16 *)srcBase, cw, ch, sbpl, (quint16 *)dstBase, dbpl);
+ else
+ memRotate(rotationType, (quint32 *)srcBase, cw, ch, sbpl, (quint32 *)dstBase, dbpl);
+
+ return;
+ }
+ }
+ }
+
if (s->matrix.type() > QTransform::TxTranslate || stretch_sr) {
if (s->flags.fast_images) {
diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp
index aef8b80..b8ad9b3 100644
--- a/src/gui/painting/qpaintengine_x11.cpp
+++ b/src/gui/painting/qpaintengine_x11.cpp
@@ -79,6 +79,8 @@
#include <private/qtessellator_p.h>
#endif
+#include <private/qstylehelper_p.h>
+
QT_BEGIN_NAMESPACE
extern Drawable qt_x11Handle(const QPaintDevice *pd);
@@ -224,7 +226,10 @@ static const uchar base_dither_matrix[DITHER_SIZE][DITHER_SIZE] = {
static QPixmap qt_patternForAlpha(uchar alpha, int screen)
{
QPixmap pm;
- QString key = QLatin1String("$qt-alpha-brush$") + QString::number(alpha) + QString::number(screen);
+ QString key = QLatin1Literal("$qt-alpha-brush$")
+ % HexString<uchar>(alpha)
+ % HexString<int>(screen);
+
if (!QPixmapCache::find(key, pm)) {
// #### why not use a mono image here????
QImage pattern(DITHER_SIZE, DITHER_SIZE, QImage::Format_ARGB32);
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 657229a..e8c4599 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -72,6 +72,7 @@
#include <private/qmath_p.h>
#include <qstatictext.h>
#include <private/qstatictext_p.h>
+#include <private/qstylehelper_p.h>
QT_BEGIN_NAMESPACE
@@ -1563,7 +1564,6 @@ void QPainter::initFrom(const QWidget *widget)
d->engine->setDirty(QPaintEngine::DirtyBrush);
d->engine->setDirty(QPaintEngine::DirtyFont);
}
- d->state->layoutDirection = widget->layoutDirection();
}
@@ -1873,7 +1873,7 @@ bool QPainter::begin(QPaintDevice *pd)
QWidget *widget = static_cast<QWidget *>(d->original_device);
initFrom(widget);
} else {
- d->state->layoutDirection = QApplication::layoutDirection();
+ d->state->layoutDirection = Qt::LayoutDirectionAuto;
// make sure we have a font compatible with the paintdevice
d->state->deviceFont = d->state->font = QFont(d->state->deviceFont, device());
}
@@ -5855,14 +5855,24 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
return;
}
+ if (d->extended->type() == QPaintEngine::OpenGL2 && !staticText_d->untransformedCoordinates) {
+ staticText_d->untransformedCoordinates = true;
+ staticText_d->needsRelayout = true;
+ } else if (d->extended->type() != QPaintEngine::OpenGL2 && staticText_d->untransformedCoordinates) {
+ staticText_d->untransformedCoordinates = false;
+ staticText_d->needsRelayout = true;
+ }
+
// Don't recalculate entire layout because of translation, rather add the dx and dy
// into the position to move each text item the correct distance.
- QPointF transformedPosition = topLeftPosition * d->state->matrix;
- QTransform matrix = d->state->matrix;
+ QPointF transformedPosition = topLeftPosition;
+ if (!staticText_d->untransformedCoordinates)
+ transformedPosition = transformedPosition * d->state->matrix;
+ QTransform oldMatrix;
// The translation has been applied to transformedPosition. Remove translation
// component from matrix.
- if (d->state->matrix.isTranslating()) {
+ if (d->state->matrix.isTranslating() && !staticText_d->untransformedCoordinates) {
qreal m11 = d->state->matrix.m11();
qreal m12 = d->state->matrix.m12();
qreal m13 = d->state->matrix.m13();
@@ -5871,6 +5881,7 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
qreal m23 = d->state->matrix.m23();
qreal m33 = d->state->matrix.m33();
+ oldMatrix = d->state->matrix;
d->state->matrix.setMatrix(m11, m12, m13,
m21, m22, m23,
0.0, 0.0, m33);
@@ -5879,7 +5890,7 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
// If the transform is not identical to the text transform,
// we have to relayout the text (for other transformations than plain translation)
bool staticTextNeedsReinit = staticText_d->needsRelayout;
- if (staticText_d->matrix != d->state->matrix) {
+ if (!staticText_d->untransformedCoordinates && staticText_d->matrix != d->state->matrix) {
staticText_d->matrix = d->state->matrix;
staticTextNeedsReinit = true;
}
@@ -5918,8 +5929,8 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
if (currentColor != oldPen.color())
setPen(oldPen);
- if (matrix.isTranslating())
- d->state->matrix = matrix;
+ if (!staticText_d->untransformedCoordinates && oldMatrix.isTranslating())
+ d->state->matrix = oldMatrix;
}
/*!
@@ -5937,6 +5948,23 @@ void QPainter::drawText(const QPointF &p, const QString &str, int tf, int justif
if (!d->engine || str.isEmpty() || pen().style() == Qt::NoPen)
return;
+ if (tf & Qt::TextBypassShaping) {
+ // Skip harfbuzz complex shaping, shape using glyph advances only
+ int len = str.length();
+ int numGlyphs = len;
+ QVarLengthGlyphLayoutArray glyphs(len);
+ QFontEngine *fontEngine = d->state->font.d->engineForScript(QUnicodeTables::Common);
+ if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, 0)) {
+ glyphs.resize(numGlyphs);
+ if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, 0))
+ Q_ASSERT_X(false, Q_FUNC_INFO, "stringToCMap shouldn't fail twice");
+ }
+
+ QTextItemInt gf(glyphs, &d->state->font, fontEngine);
+ drawTextItem(p, gf);
+ return;
+ }
+
QStackTextEngine engine(str, d->state->font);
engine.option.setTextDirection(d->state->layoutDirection);
if (tf & (Qt::TextForceLeftToRight|Qt::TextForceRightToLeft)) {
@@ -6217,10 +6245,9 @@ static QPixmap generateWavyPixmap(qreal maxRadius, const QPen &pen)
{
const qreal radiusBase = qMax(qreal(1), maxRadius);
- QString key = QLatin1String("WaveUnderline-");
- key += pen.color().name();
- key += QLatin1Char('-');
- key += QString::number(radiusBase);
+ QString key = QLatin1Literal("WaveUnderline-")
+ % pen.color().name()
+ % HexString<qreal>(radiusBase);
QPixmap pixmap;
if (QPixmapCache::find(key, pixmap))
@@ -8028,7 +8055,10 @@ start_lengthVariant:
Sets the layout direction used by the painter when drawing text,
to the specified \a direction.
- \sa layoutDirection(), drawText(), {QPainter#Settings}{Settings}
+ The default is Qt::LayoutDirectionAuto, which will implicitly determine the
+ direction from the text drawn.
+
+ \sa QTextOption::setTextDirection(), layoutDirection(), drawText(), {QPainter#Settings}{Settings}
*/
void QPainter::setLayoutDirection(Qt::LayoutDirection direction)
{
@@ -8040,12 +8070,12 @@ void QPainter::setLayoutDirection(Qt::LayoutDirection direction)
/*!
Returns the layout direction used by the painter when drawing text.
- \sa setLayoutDirection(), drawText(), {QPainter#Settings}{Settings}
+ \sa QTextOption::textDirection(), setLayoutDirection(), drawText(), {QPainter#Settings}{Settings}
*/
Qt::LayoutDirection QPainter::layoutDirection() const
{
Q_D(const QPainter);
- return d->state ? d->state->layoutDirection : Qt::LeftToRight;
+ return d->state ? d->state->layoutDirection : Qt::LayoutDirectionAuto;
}
QPainterState::QPainterState(const QPainterState *s)
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index 423cce9..47b7758 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -1626,7 +1626,7 @@ static QPainterPath mapProjective(const QTransform &transform, const QPainterPat
QPainterPath QTransform::map(const QPainterPath &path) const
{
TransformationType t = inline_type();
- if (t == TxNone || path.isEmpty())
+ if (t == TxNone || path.elementCount() == 0)
return path;
if (t >= TxProject)
diff --git a/src/gui/statemachine/qguistatemachine.cpp b/src/gui/statemachine/qguistatemachine.cpp
index 63ad94e..2b4c9c2 100644
--- a/src/gui/statemachine/qguistatemachine.cpp
+++ b/src/gui/statemachine/qguistatemachine.cpp
@@ -474,9 +474,11 @@ static QEvent *cloneEvent(QEvent *e)
case QEvent::TouchEnd:
return new QTouchEvent(*static_cast<QTouchEvent*>(e));
+#ifndef QT_NO_GESTURES
case QEvent::NativeGesture:
Q_ASSERT_X(false, "cloneEvent()", "not implemented");
break;
+#endif
case QEvent::RequestSoftwareInputPanel:
case QEvent::CloseSoftwareInputPanel:
diff --git a/src/gui/styles/qgtkpainter.cpp b/src/gui/styles/qgtkpainter.cpp
index 79c53e9..0217a39 100644
--- a/src/gui/styles/qgtkpainter.cpp
+++ b/src/gui/styles/qgtkpainter.cpp
@@ -241,8 +241,10 @@ void QGtkPainter::paintBoxGap(GtkWidget *gtkWidget, const gchar* part,
if (rect.height() > maxHeight && (gap_side == GTK_POS_TOP || gap_side == GTK_POS_BOTTOM))
rect.setHeight(2 * border + 1);
- QString gapExtras = QString(QLS("s %0 w %1 g %2")).arg(gap_side).arg(width).arg(x);
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) + gapExtras;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget)
+ % HexString<uchar>(gap_side)
+ % HexString<gint>(width)
+ % HexString<gint>(x);
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_box_gap (style,
@@ -307,7 +309,7 @@ void QGtkPainter::paintBox(GtkWidget *gtkWidget, const gchar* part,
rect.setHeight(2 * border + 1);
QString pixmapName = uniqueName(QLS(part), state, shadow,
- rect.size(), gtkWidget) + pmKey;
+ rect.size(), gtkWidget) % pmKey;
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_box (style,
@@ -357,9 +359,11 @@ void QGtkPainter::paintHline(GtkWidget *gtkWidget, const gchar* part,
return;
QPixmap cache;
- QString hLineExtras = QString(QLS("%0 %1 %2")).arg(x1).arg(x2).arg(y);
QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
- + hLineExtras + pmKey;
+ % HexString<int>(x1)
+ % HexString<int>(x2)
+ % HexString<int>(y)
+ % pmKey;
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_hline (style,
pixmap,
@@ -384,9 +388,12 @@ void QGtkPainter::paintVline(GtkWidget *gtkWidget, const gchar* part,
return;
QPixmap cache;
- QString vLineExtras = QString(QLS("%0 %1 %2")).arg(y1).arg(y2).arg(x);
- QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(),
- gtkWidget) + vLineExtras +pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
+ % HexString<int>(y1)
+ % HexString<int>(y2)
+ % HexString<int>(x)
+ % pmKey;
+
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_vline (style,
pixmap,
@@ -412,8 +419,10 @@ void QGtkPainter::paintExpander(GtkWidget *gtkWidget,
return;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(),
- gtkWidget) + QString::number(expander_state) + pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
+ % HexString<uchar>(expander_state)
+ % pmKey;
+
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_expander (style, pixmap,
state, NULL,
@@ -436,7 +445,7 @@ void QGtkPainter::paintFocus(GtkWidget *gtkWidget, const gchar* part,
return;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget) + pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget) % pmKey;
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_focus (style, pixmap, state, NULL,
gtkWidget,
@@ -461,7 +470,7 @@ void QGtkPainter::paintResizeGrip(GtkWidget *gtkWidget, const gchar* part,
return;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) + pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) % pmKey;
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_resize_grip (style, pixmap, state,
NULL, gtkWidget,
@@ -486,8 +495,9 @@ void QGtkPainter::paintArrow(GtkWidget *gtkWidget, const gchar* part,
return;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) +
- QString::number((int)arrow_type) + pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size())
+ % HexString<uchar>(arrow_type)
+ % pmKey;
GdkRectangle gtkCliprect = {0, 0, rect.width(), rect.height()};
int xOffset = m_cliprect.isValid() ? arrowrect.x() - m_cliprect.x() : 0;
@@ -518,7 +528,8 @@ void QGtkPainter::paintHandle(GtkWidget *gtkWidget, const gchar* part, const QRe
QPixmap cache;
QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size())
- + QString::number(orientation);
+ % HexString<uchar>(orientation);
+
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_handle (style,
pixmap,
@@ -546,7 +557,7 @@ void QGtkPainter::paintSlider(GtkWidget *gtkWidget, const gchar* part, const QRe
return;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) + pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) % pmKey;
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_slider (style,
pixmap,
@@ -577,7 +588,7 @@ void QGtkPainter::paintShadow(GtkWidget *gtkWidget, const gchar* part,
QRect r = rect;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) + pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) % pmKey;
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_shadow(style, pixmap, state, shadow, NULL,
gtkWidget, part, 0, 0, rect.width(), rect.height()));
@@ -596,7 +607,7 @@ void QGtkPainter::paintFlatBox(GtkWidget *gtkWidget, const gchar* part,
return;
QRect r = rect;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) + pmKey;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) % pmKey;
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_flat_box (style,
pixmap,
@@ -623,8 +634,8 @@ void QGtkPainter::paintExtention(GtkWidget *gtkWidget,
QRect r = rect;
QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget);
- pixmapName += QString::number(gap_pos);
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget)
+ % HexString<uchar>(gap_pos);
if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_extension (style, pixmap, state, shadow,
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 9d6dc9a..b59a033 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -67,6 +67,7 @@
#include <QtGui/QRadioButton>
#include <QtGui/QCheckBox>
#include <QtGui/QTreeView>
+#include <QtGui/QStyledItemDelegate>
#include <qpixmapcache.h>
#undef signals // Collides with GTK stymbols
#include <private/qgtkpainter_p.h>
@@ -692,7 +693,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
// thin rectangular images
const int pmSize = 64;
const int border = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget);
- const QString pmKey = QString(QLS("windowframe %0")).arg(option->state);
+ const QString pmKey = QLatin1Literal("windowframe") % HexString<uint>(option->state);
QPixmap pixmap;
QRect pmRect(QPoint(0,0), QSize(pmSize, pmSize));
@@ -817,24 +818,49 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
option->state & State_Open ? openState : closedState , gtkTreeView->style);
}
break;
+
+ case PE_PanelItemViewRow:
+ // This primitive is only used to draw selection behind selected expander arrows.
+ // We try not to decorate the tree branch background unless you inherit from StyledItemDelegate
+ // The reason for this is that a lot of code that relies on custom item delegates will look odd having
+ // a gradient on the branch but a flat shaded color on the item itself.
+ QCommonStyle::drawPrimitive(element, option, painter, widget);
+ if (!option->state & State_Selected) {
+ break;
+ } else {
+ if (const QAbstractItemView *view = qobject_cast<const QAbstractItemView*>(widget)) {
+ if (!qobject_cast<QStyledItemDelegate*>(view->itemDelegate()))
+ break;
+ }
+ } // fall through
+
case PE_PanelItemViewItem:
if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
- if (vopt->state & State_Selected) {
- QLinearGradient gradient;
- gradient.setStart(option->rect.left(), option->rect.top());
- gradient.setFinalStop(option->rect.left(), option->rect.bottom());
- gradient.setColorAt(0, option->palette.highlight().color().lighter(105));
- gradient.setColorAt(0.5, option->palette.highlight().color().lighter(101));
- gradient.setColorAt(0.51, option->palette.highlight().color().darker(101));
- gradient.setColorAt(1, option->palette.highlight().color().darker(105));
- painter->fillRect(option->rect, gradient);
- } else {
- if (vopt->backgroundBrush.style() != Qt::NoBrush) {
- QPointF oldBO = painter->brushOrigin();
- painter->setBrushOrigin(vopt->rect.topLeft());
- painter->fillRect(vopt->rect, vopt->backgroundBrush);
- painter->setBrushOrigin(oldBO);
+ if (vopt->backgroundBrush.style() != Qt::NoBrush) {
+ QPointF oldBO = painter->brushOrigin();
+ painter->setBrushOrigin(vopt->rect.topLeft());
+ painter->fillRect(vopt->rect, vopt->backgroundBrush);
+ painter->setBrushOrigin(oldBO);
+ if (!(option->state & State_Selected))
+ break;
+ }
+ if (GtkWidget *gtkTreeView = d->gtkWidget("GtkTreeView")) {
+ const char *detail = "cell_even_ruled";
+ if (vopt && vopt->features & QStyleOptionViewItemV2::Alternate)
+ detail = "cell_odd_ruled";
+ bool isActive = option->state & State_Active;
+ QString key;
+ if (isActive ) {
+ // Required for active/non-active window appearance
+ key = QLS("a");
+ GTK_WIDGET_SET_FLAGS(gtkTreeView, GTK_HAS_FOCUS);
}
+ gtkPainter.paintFlatBox(gtkTreeView, detail, option->rect,
+ option->state & State_Selected ? GTK_STATE_SELECTED :
+ option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
+ GTK_SHADOW_OUT, gtkTreeView->style, key);
+ if (isActive )
+ GTK_WIDGET_UNSET_FLAGS(gtkTreeView, GTK_HAS_FOCUS);
}
}
break;
diff --git a/src/gui/styles/qplastiquestyle.cpp b/src/gui/styles/qplastiquestyle.cpp
index c8711f6..20d9bd9 100644
--- a/src/gui/styles/qplastiquestyle.cpp
+++ b/src/gui/styles/qplastiquestyle.cpp
@@ -488,7 +488,9 @@ static void qBrushSetAlphaF(QBrush *brush, qreal alpha)
// Modify the texture - ridiculously expensive.
QPixmap texture = brush->texture();
QPixmap pixmap;
- QString name = QString::fromLatin1("qbrushtexture-alpha-%1-%2").arg(alpha).arg(texture.cacheKey());
+ QString name = QLatin1Literal("qbrushtexture-alpha")
+ % HexString<qreal>(alpha)
+ % HexString<qint64>(texture.cacheKey());
if (!QPixmapCache::find(name, pixmap)) {
QImage image = texture.toImage();
QRgb *rgb = reinterpret_cast<QRgb *>(image.bits());
@@ -549,7 +551,10 @@ static QBrush qBrushLight(QBrush brush, int light)
// Modify the texture - ridiculously expensive.
QPixmap texture = brush.texture();
QPixmap pixmap;
- QString name = QString::fromLatin1("qbrushtexture-light-%1-%2").arg(light).arg(texture.cacheKey());
+ QString name = QLatin1Literal("qbrushtexture-light")
+ % HexString<int>(light)
+ % HexString<qint64>(texture.cacheKey());
+
if (!QPixmapCache::find(name, pixmap)) {
QImage image = texture.toImage();
QRgb *rgb = reinterpret_cast<QRgb *>(image.bits());
@@ -608,7 +613,10 @@ static QBrush qBrushDark(QBrush brush, int dark)
// Modify the texture - ridiculously expensive.
QPixmap texture = brush.texture();
QPixmap pixmap;
- QString name = QString::fromLatin1("qbrushtexture-dark-%1-%2").arg(dark).arg(brush.texture().cacheKey());
+ QString name = QLatin1Literal("qbrushtexture-dark")
+ % HexString<int>(dark)
+ % HexString<qint64>(texture.cacheKey());
+
if (!QPixmapCache::find(name, pixmap)) {
QImage image = texture.toImage();
QRgb *rgb = reinterpret_cast<QRgb *>(image.bits());
@@ -732,8 +740,12 @@ static QColor mergedColors(const QColor &colorA, const QColor &colorB, int facto
static void qt_plastique_draw_gradient(QPainter *painter, const QRect &rect, const QColor &gradientStart,
const QColor &gradientStop)
{
- QString gradientName;
- gradientName.sprintf("%dx%d-%x-%x", rect.width(), rect.height(), gradientStart.rgba(), gradientStop.rgba());
+ QString gradientName = QLatin1Literal("qplastique-g")
+ % HexString<int>(rect.width())
+ % HexString<int>(rect.height())
+ % HexString<QRgb>(gradientStart.rgba())
+ % HexString<QRgb>(gradientStop.rgba());
+
QPixmap cache;
QPainter *p = painter;
QRect r = rect;
@@ -1092,14 +1104,6 @@ void QPlastiqueStyle::drawPrimitive(PrimitiveElement element, const QStyleOption
Q_ASSERT(option);
QColor borderColor = option->palette.background().color().darker(178);
- QColor gradientStartColor = option->palette.button().color().lighter(104);
- QColor gradientStopColor = option->palette.button().color().darker(105);
- QColor highlightedGradientStartColor = option->palette.button().color().lighter(101);
- QColor highlightedGradientStopColor = mergedColors(option->palette.button().color(), option->palette.highlight().color(), 85);
- QColor highlightedBaseGradientStartColor = option->palette.base().color();
- QColor highlightedBaseGradientStopColor = mergedColors(option->palette.base().color().darker(105), option->palette.highlight().color(), 70);
- QColor highlightedDarkInnerBorderColor = mergedColors(option->palette.button().color(), option->palette.highlight().color(), 35);
- QColor highlightedLightInnerBorderColor = mergedColors(option->palette.button().color(), option->palette.highlight().color(), 58);
QColor alphaCornerColor;
if (widget) {
// ### backgroundrole/foregroundrole should be part of the style option
@@ -1107,13 +1111,7 @@ void QPlastiqueStyle::drawPrimitive(PrimitiveElement element, const QStyleOption
} else {
alphaCornerColor = mergedColors(option->palette.background().color(), borderColor);
}
- QColor alphaInnerColor = mergedColors(highlightedLightInnerBorderColor, gradientStartColor);
- QColor alphaInnerColorNoHover = mergedColors(borderColor, gradientStartColor);
QColor alphaTextColor = mergedColors(option->palette.background().color(), option->palette.text().color());
- QColor alphaLightTextColor = mergedColors(option->palette.background().color().lighter(250), option->palette.text().color().lighter(250));
- QColor lightShadow = option->palette.button().color().lighter(105);
- QColor shadowGradientStartColor = option->palette.button().color().darker(115);
- QColor shadow = shadowGradientStartColor;
switch (element) {
case PE_IndicatorButtonDropDown:
@@ -2057,7 +2055,6 @@ void QPlastiqueStyle::drawControl(ControlElement element, const QStyleOption *op
bool reverse = (tab->direction == Qt::RightToLeft);
int lowerTop = selected ? 0 : 3; // to make the selected tab bigger than the rest
- QRect adjustedRect;
bool atEnd = (tab->position == QStyleOptionTab::End) || onlyTab;
bool atBeginning = ((tab->position == QStyleOptionTab::Beginning) || onlyTab)
&& !leftCornerWidget;
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index d28e1d9..91d3fa6 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -135,13 +135,13 @@ const struct QS60StylePrivate::frameElementCenter QS60StylePrivate::m_frameEleme
{SE_TableHeaderItem, QS60StyleEnums::SP_QsnFrCaleHeadingCenter},
{SE_ToolTip, QS60StyleEnums::SP_QsnFrPopupPreviewCenter},
{SE_ToolBar, QS60StyleEnums::SP_QsnFrPopupSubCenter},
- {SE_ToolBarButton, QS60StyleEnums::SP_QsnFrSctrlButtonCenter},
- {SE_ToolBarButtonPressed, QS60StyleEnums::SP_QsnFrSctrlButtonCenterPressed},
+ {SE_ToolBarButton, QS60StyleEnums::SP_QgnFrSctrlButtonCenter},
+ {SE_ToolBarButtonPressed, QS60StyleEnums::SP_QgnFrSctrlButtonCenterPressed},
{SE_PanelBackground, QS60StyleEnums::SP_QsnFrSetOptCenter},
{SE_ButtonInactive, QS60StyleEnums::SP_QsnFrButtonCenterInactive},
{SE_Editor, QS60StyleEnums::SP_QsnFrInputCenter},
{SE_TableItemPressed, QS60StyleEnums::SP_QsnFrGridCenterPressed},
- {SE_ListItemPressed, QS60StyleEnums::SP_QsnFrListPressed},
+ {SE_ListItemPressed, QS60StyleEnums::SP_QsnFrListCenterPressed},
};
static const int frameElementsCount =
@@ -1750,6 +1750,12 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
}
const bool enabled = optionMenuItem.state & State_Enabled;
const bool checkable = optionMenuItem.checkType != QStyleOptionMenuItem::NotCheckable;
+ bool ignoreCheckMark = false;
+
+#ifndef QT_NO_COMBOBOX
+ if (qobject_cast<const QComboBox*>(widget))
+ ignoreCheckMark = true; //ignore the checkmarks provided by the QComboMenuDelegate
+#endif
uint text_flags = Qt::AlignLeading | Qt::TextShowMnemonic | Qt::TextDontClip
| Qt::TextSingleLine | Qt::AlignVCenter;
@@ -1787,7 +1793,8 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
iconRect.translate(-optionCheckBox.rect.width() - vSpacing, 0);
optionCheckBox.rect.translate(textRect.width() + iconRect.width(), 0);
}
- drawPrimitive(PE_IndicatorMenuCheckMark, &optionCheckBox, painter, widget);
+ if (!ignoreCheckMark)
+ drawPrimitive(PE_IndicatorMenuCheckMark, &optionCheckBox, painter, widget);
}
//draw icon and/or checkState
QPixmap pix = menuItem->icon.pixmap(pixelMetric(PM_SmallIconSize),
@@ -1817,7 +1824,7 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
QS60StylePrivate::SF_PointNorth : QS60StylePrivate::SF_PointSouth;
painter->save();
painter->setPen(option->palette.windowText().color());
- QS60StylePrivate::drawSkinPart(QS60StyleEnums::SP_QgnIndiSubMenu, painter, arrowOptions.rect,
+ QS60StylePrivate::drawSkinPart(QS60StyleEnums::SP_QgnIndiSubmenu, painter, arrowOptions.rect,
(flags | QS60StylePrivate::SF_ColorSkinned | arrowDirection));
painter->restore();
}
@@ -3321,13 +3328,13 @@ QIcon QS60Style::standardIconImplementation(StandardPixmap standardIcon,
part = QS60StyleEnums::SP_QgnNoteErased;
break;
case SP_ToolBarHorizontalExtensionButton:
- part = QS60StyleEnums::SP_QgnIndiSubMenu;
+ part = QS60StyleEnums::SP_QgnIndiSubmenu;
if (QApplication::layoutDirection() == Qt::RightToLeft)
adjustedFlags |= QS60StylePrivate::SF_PointSouth;
break;
case SP_ToolBarVerticalExtensionButton:
adjustedFlags |= QS60StylePrivate::SF_PointEast;
- part = QS60StyleEnums::SP_QgnIndiSubMenu;
+ part = QS60StyleEnums::SP_QgnIndiSubmenu;
break;
default:
diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index d8c31f8..836969a 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -154,7 +154,7 @@ public:
SP_QgnIndiRadiobuttOn,
SP_QgnGrafNsliderMarker,
SP_QgnGrafNsliderMarkerSelected,
- SP_QgnIndiSubMenu,
+ SP_QgnIndiSubmenu,
SP_QgnNoteErased,
SP_QgnNoteError,
SP_QgnNoteInfo,
@@ -166,6 +166,24 @@ public:
SP_QgnPropFolderSmall,
SP_QgnPropFolderSmallNew,
SP_QgnPropPhoneMemcLarge,
+ SP_QgnFrSctrlButtonCornerTl, // Toolbar button
+ SP_QgnFrSctrlButtonCornerTr,
+ SP_QgnFrSctrlButtonCornerBl,
+ SP_QgnFrSctrlButtonCornerBr,
+ SP_QgnFrSctrlButtonSideT,
+ SP_QgnFrSctrlButtonSideB,
+ SP_QgnFrSctrlButtonSideL,
+ SP_QgnFrSctrlButtonSideR,
+ SP_QgnFrSctrlButtonCenter,
+ SP_QgnFrSctrlButtonCornerTlPressed, // Toolbar button, pressed
+ SP_QgnFrSctrlButtonCornerTrPressed,
+ SP_QgnFrSctrlButtonCornerBlPressed,
+ SP_QgnFrSctrlButtonCornerBrPressed,
+ SP_QgnFrSctrlButtonSideTPressed,
+ SP_QgnFrSctrlButtonSideBPressed,
+ SP_QgnFrSctrlButtonSideLPressed,
+ SP_QgnFrSctrlButtonSideRPressed,
+ SP_QgnFrSctrlButtonCenterPressed,
SP_QsnCpScrollHandleBottomPressed, //ScrollBar handle, pressed state
SP_QsnCpScrollHandleMiddlePressed,
SP_QsnCpScrollHandleTopPressed,
@@ -198,10 +216,10 @@ public:
SP_QsnFrCaleCornerTr,
SP_QsnFrCaleCornerBl,
SP_QsnFrCaleCornerBr,
- SP_QsnFrCaleGSideT,
- SP_QsnFrCaleGSideB,
- SP_QsnFrCaleGSideL,
- SP_QsnFrCaleGSideR,
+ SP_QsnFrCaleSideT,
+ SP_QsnFrCaleSideB,
+ SP_QsnFrCaleSideL,
+ SP_QsnFrCaleSideR,
SP_QsnFrCaleCenter,
SP_QsnFrCaleHeadingCornerTl, // calendar grid header
SP_QsnFrCaleHeadingCornerTr,
@@ -266,24 +284,6 @@ public:
SP_QsnFrPopupSubSideL,
SP_QsnFrPopupSubSideR,
SP_QsnFrPopupSubCenter,
- SP_QsnFrSctrlButtonCornerTl, // Toolbar button
- SP_QsnFrSctrlButtonCornerTr,
- SP_QsnFrSctrlButtonCornerBl,
- SP_QsnFrSctrlButtonCornerBr,
- SP_QsnFrSctrlButtonSideT,
- SP_QsnFrSctrlButtonSideB,
- SP_QsnFrSctrlButtonSideL,
- SP_QsnFrSctrlButtonSideR,
- SP_QsnFrSctrlButtonCenter,
- SP_QsnFrSctrlButtonCornerTlPressed, // Toolbar button, pressed
- SP_QsnFrSctrlButtonCornerTrPressed,
- SP_QsnFrSctrlButtonCornerBlPressed,
- SP_QsnFrSctrlButtonCornerBrPressed,
- SP_QsnFrSctrlButtonSideTPressed,
- SP_QsnFrSctrlButtonSideBPressed,
- SP_QsnFrSctrlButtonSideLPressed,
- SP_QsnFrSctrlButtonSideRPressed,
- SP_QsnFrSctrlButtonCenterPressed,
SP_QsnFrButtonCornerTlInactive, // Inactive button
SP_QsnFrButtonCornerTrInactive,
SP_QsnFrButtonCornerBlInactive,
@@ -310,7 +310,7 @@ public:
SP_QsnFrListSideBPressed,
SP_QsnFrListSideLPressed,
SP_QsnFrListSideRPressed,
- SP_QsnFrListPressed,
+ SP_QsnFrListCenterPressed,
};
enum ColorLists {
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index c1223af..e5c74ad 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -179,7 +179,7 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
/* SP_QgnGrafBarFrameSideR */ {KAknsIIDQgnGrafBarFrameSideR, EDrawIcon, ES60_All, -1,-1},
/* SP_QgnGrafBarProgress */ {KAknsIIDQgnGrafBarProgress, EDrawIcon, ES60_All, -1,-1},
// No drop area for 3.x non-touch devices
- /* SP_QgnGrafOrgBgGrid */ {KAknsIIDNone, EDrawIcon, ES60_3_X, EAknsMajorGeneric ,0x1eba}, //KAknsIIDQgnGrafOrgBgGrid
+ /* SP_QgnGrafOrgBgGrid */ {KAknsIIDNone, EDrawIcon, ES60_3_X, EAknsMajorGeneric ,0x1eba}, //KAknsIIDQgnGrafOrgBgGrid
/* SP_QgnGrafScrollArrowDown */ {KAknsIIDQgnGrafScrollArrowDown, EDrawGulIcon, ES60_All, -1,-1},
/* SP_QgnGrafScrollArrowLeft */ {KAknsIIDQgnGrafScrollArrowLeft, EDrawGulIcon, ES60_All, -1,-1},
/* SP_QgnGrafScrollArrowRight */ {KAknsIIDQgnGrafScrollArrowRight, EDrawGulIcon, ES60_All, -1,-1},
@@ -214,7 +214,7 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
// In 3.1 there different slider graphic and no pressed state.
/* SP_QgnGrafNsliderMarker */ {KAknsIIDQgnIndiSliderEdit, EDrawIcon, ES60_3_1, EAknsMajorGeneric, 0x19d1 /* KAknsIIDQgnGrafNsliderMarker */},
/* SP_QgnGrafNsliderMarkerSelected */ {KAknsIIDQgnIndiSliderEdit, EDrawIcon, ES60_3_1, EAknsMajorGeneric, 0x1a4a /* KAknsIIDQgnGrafNsliderMarkerSelected */},
- /* SP_QgnIndiSubMenu */ {KAknsIIDQgnIndiSubmenu, EDrawIcon, ES60_All, -1,-1},
+ /* SP_QgnIndiSubmenu */ {KAknsIIDQgnIndiSubmenu, EDrawIcon, ES60_All, -1,-1},
/* SP_QgnNoteErased */ {KAknsIIDQgnNoteErased, EDrawIcon, ES60_All, -1,-1},
/* SP_QgnNoteError */ {KAknsIIDQgnNoteError, EDrawIcon, ES60_All, -1,-1},
/* SP_QgnNoteInfo */ {KAknsIIDQgnNoteInfo, EDrawIcon, ES60_All, -1,-1},
@@ -227,6 +227,28 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
/* SP_QgnPropFolderSmallNew */ {KAknsIIDQgnPropFolderSmallNew, EDrawIcon, ES60_All, -1,-1},
/* SP_QgnPropPhoneMemcLarge */ {KAknsIIDQgnPropPhoneMemcLarge, EDrawIcon, ES60_All, -1,-1},
+ // Toolbar graphics is different in 3.1/3.2 vs. 5.0
+ /* SP_QgnFrSctrlButtonCornerTl */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2301}, /* KAknsIIDQgnFrSctrlButtonCornerTl*/
+ /* SP_QgnFrSctrlButtonCornerTr */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2302},
+ /* SP_QgnFrSctrlButtonCornerBl */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2303},
+ /* SP_QgnFrSctrlButtonCornerBr */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2304},
+ /* SP_QgnFrSctrlButtonSideT */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2305},
+ /* SP_QgnFrSctrlButtonSideB */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2306},
+ /* SP_QgnFrSctrlButtonSideL */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2307},
+ /* SP_QgnFrSctrlButtonSideR */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2308},
+ /* SP_QgnFrSctrlButtonCenter */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2309}, /*KAknsIIDQgnFrSctrlButtonCenter*/
+
+ // No pressed state for toolbar button in 3.1/3.2.
+ /* SP_QgnFrSctrlButtonCornerTlPressed */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2621}, /*KAknsIIDQgnFrSctrlButtonCornerTlPressed*/
+ /* SP_QgnFrSctrlButtonCornerTrPressed */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2622},
+ /* SP_QgnFrSctrlButtonCornerBlPressed */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2623},
+ /* SP_QgnFrSctrlButtonCornerBrPressed */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2624},
+ /* SP_QgnFrSctrlButtonSideTPressed */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2625},
+ /* SP_QgnFrSctrlButtonSideBPressed */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2626},
+ /* SP_QgnFrSctrlButtonSideLPressed */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2627},
+ /* SP_QgnFrSctrlButtonSideRPressed */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2628},
+ /* SP_QgnFrSctrlButtonCenterPressed */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2629},
+
// 3.1 & 3.2 do not have pressed state for scrollbar, so use normal scrollbar graphics instead.
/* SP_QsnCpScrollHandleBottomPressed*/ {KAknsIIDQsnCpScrollHandleBottom, EDrawIcon, ES60_3_X, EAknsMajorGeneric, 0x20f8}, /*KAknsIIDQsnCpScrollHandleBottomPressed*/
/* SP_QsnCpScrollHandleMiddlePressed*/ {KAknsIIDQsnCpScrollHandleMiddle, EDrawIcon, ES60_3_X, EAknsMajorGeneric, 0x20f9}, /*KAknsIIDQsnCpScrollHandleMiddlePressed*/
@@ -266,10 +288,10 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
/* SP_QsnFrCaleCornerTr */ {KAknsIIDQsnFrCaleCornerTr, ENoDraw, ES60_All, -1,-1},
/* SP_QsnFrCaleCornerBl */ {KAknsIIDQsnFrCaleCornerBl, ENoDraw, ES60_All, -1,-1},
/* SP_QsnFrCaleCornerBr */ {KAknsIIDQsnFrCaleCornerBr, ENoDraw, ES60_All, -1,-1},
- /* SP_QsnFrCaleGSideT */ {KAknsIIDQsnFrCaleSideT, ENoDraw, ES60_All, -1,-1},
- /* SP_QsnFrCaleGSideB */ {KAknsIIDQsnFrCaleSideB, ENoDraw, ES60_All, -1,-1},
- /* SP_QsnFrCaleGSideL */ {KAknsIIDQsnFrCaleSideL, ENoDraw, ES60_All, -1,-1},
- /* SP_QsnFrCaleGSideR */ {KAknsIIDQsnFrCaleSideR, ENoDraw, ES60_All, -1,-1},
+ /* SP_QsnFrCaleSideT */ {KAknsIIDQsnFrCaleSideT, ENoDraw, ES60_All, -1,-1},
+ /* SP_QsnFrCaleSideB */ {KAknsIIDQsnFrCaleSideB, ENoDraw, ES60_All, -1,-1},
+ /* SP_QsnFrCaleSideL */ {KAknsIIDQsnFrCaleSideL, ENoDraw, ES60_All, -1,-1},
+ /* SP_QsnFrCaleSideR */ {KAknsIIDQsnFrCaleSideR, ENoDraw, ES60_All, -1,-1},
/* SP_QsnFrCaleCenter */ {KAknsIIDQsnFrCaleCenter, ENoDraw, ES60_All, -1,-1},
/* SP_QsnFrCaleHeadingCornerTl */ {KAknsIIDQsnFrCaleHeadingCornerTl, ENoDraw, ES60_All, -1,-1},
@@ -344,28 +366,6 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
/* SP_QsnFrPopupSubSideR */ {KAknsIIDQsnFrPopupSubSideR, ENoDraw, ES60_3_X, -1,-1},
/* SP_QsnFrPopupSubCenter */ {KAknsIIDQsnFrPopupCenterSubmenu, ENoDraw, ES60_3_X, -1,-1},
- // Toolbar graphics is different in 3.1/3.2 vs. 5.0
- /* SP_QsnFrSctrlButtonCornerTl */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2301}, /* KAknsIIDQgnFrSctrlButtonCornerTl*/
- /* SP_QsnFrSctrlButtonCornerTr */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2302},
- /* SP_QsnFrSctrlButtonCornerBl */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2303},
- /* SP_QsnFrSctrlButtonCornerBr */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2304},
- /* SP_QsnFrSctrlButtonSideT */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2305},
- /* SP_QsnFrSctrlButtonSideB */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2306},
- /* SP_QsnFrSctrlButtonSideL */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2307},
- /* SP_QsnFrSctrlButtonSideR */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2308},
- /* SP_QsnFrSctrlButtonCenter */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2309}, /*KAknsIIDQgnFrSctrlButtonCenter*/
-
- // No pressed state for toolbar button in 3.1/3.2.
- /* SP_QsnFrSctrlButtonCornerTlPressed */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2621}, /*KAknsIIDQsnFrSctrlButtonCornerTlPressed*/
- /* SP_QsnFrSctrlButtonCornerTrPressed */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2622},
- /* SP_QsnFrSctrlButtonCornerBlPressed */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2623},
- /* SP_QsnFrSctrlButtonCornerBrPressed */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2624},
- /* SP_QsnFrSctrlButtonSideTPressed */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2625},
- /* SP_QsnFrSctrlButtonSideBPressed */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2626},
- /* SP_QsnFrSctrlButtonSideLPressed */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2627},
- /* SP_QsnFrSctrlButtonSideRPressed */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2628},
- /* SP_QsnFrSctrlButtonCenterPressed */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2629},
-
// No inactive button graphics in 3.1/3.2
/* SP_QsnFrButtonCornerTlInactive */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x21b1}, /*KAknsIIDQsnFrButtonCornerTlInactive*/
/* SP_QsnFrButtonCornerTrInactive */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x21b2},
@@ -397,7 +397,7 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
/* SP_QsnFrListSideBPressed */ {KAknsIIDQsnFrListSideB, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2690},
/* SP_QsnFrListSideLPressed */ {KAknsIIDQsnFrListSideL, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2691},
/* SP_QsnFrListSideRPressed */ {KAknsIIDQsnFrListSideR, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2692},
- /* SP_QsnFrListPressed */ {KAknsIIDQsnFrList, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2693},
+ /* SP_QsnFrListCenterPressed */ {KAknsIIDQsnFrListCenter, ENoDraw, ES60_3_X, EAknsMajorSkin, 0x2693},
};
QPixmap QS60StyleModeSpecifics::skinnedGraphics(
@@ -514,7 +514,7 @@ void QS60StyleModeSpecifics::fallbackInfo(const QS60StyleEnums::SkinParts &style
case QS60StyleEnums::SP_QgnGrafNsliderMarkerSelected:
fallbackIndex = 17574; /* EMbmAvkonQgn_graf_nslider_marker_selected */
break;
- case QS60StyleEnums::SP_QgnIndiSubMenu:
+ case QS60StyleEnums::SP_QgnIndiSubmenu:
fallbackIndex = EMbmAvkonQgn_indi_submenu;
break;
case QS60StyleEnums::SP_QgnNoteErased:
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 515b6c7..43fa4b9 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -3190,7 +3190,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
subRule2.drawRule(p, r);
}
- handleSubRule.drawRule(p, grooveSubRule.boxRect(hr, Margin));
+ handleSubRule.drawRule(p, handleSubRule.boxRect(hr, Margin));
}
if (slider->subControls & SC_SliderTickmarks) {
diff --git a/src/gui/styles/qwindowsstyle.cpp b/src/gui/styles/qwindowsstyle.cpp
index 0314c6f..579dd0b 100644
--- a/src/gui/styles/qwindowsstyle.cpp
+++ b/src/gui/styles/qwindowsstyle.cpp
@@ -1388,8 +1388,9 @@ void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt,
QRect r = opt->rect;
int size = qMin(r.height(), r.width());
QPixmap pixmap;
- QString pixmapName = QStyleHelper::uniqueName(QLatin1String("$qt_ia-") + QLatin1String(metaObject()->className()), opt, QSize(size, size))
- + QLatin1Char('-') + QString::number(pe);
+ QString pixmapName = QStyleHelper::uniqueName(QLatin1String("$qt_ia-")
+ % QLatin1String(metaObject()->className()), opt, QSize(size, size))
+ % HexString<uint>(pe);
if (!QPixmapCache::find(pixmapName, pixmap)) {
int border = size/5;
int sqsize = 2*(size/2);
diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp
index 489b70b..943df7f 100644
--- a/src/gui/text/qfontdatabase_s60.cpp
+++ b/src/gui/text/qfontdatabase_s60.cpp
@@ -49,12 +49,12 @@
#include <private/qt_s60_p.h>
#include "qendian.h"
#include <private/qcore_symbian_p.h>
-#if defined(QT_NO_FREETYPE)
+#ifdef QT_NO_FREETYPE
#include <openfont.h>
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <graphics/openfontrasterizer.h> // COpenFontRasterizer has moved to a new header file
#endif // SYMBIAN_ENABLE_SPLIT_HEADERS
-#endif
+#endif // QT_NO_FREETYPE
QT_BEGIN_NAMESPACE
@@ -91,7 +91,7 @@ QFileInfoList alternativeFilePaths(const QString &path, const QStringList &nameF
return result;
}
-#if defined(QT_NO_FREETYPE)
+#ifdef QT_NO_FREETYPE
class QSymbianFontDatabaseExtrasImplementation : public QSymbianFontDatabaseExtras
{
public:
@@ -100,16 +100,41 @@ public:
const QSymbianTypeFaceExtras *extras(const QString &typeface, bool bold, bool italic) const;
+#ifndef Q_SYMBIAN_HAS_FONTTABLE_API
+ struct CFontFromFontStoreReleaser {
+ static inline void cleanup(CFont *font)
+ {
+ if (!font)
+ return;
+ const QSymbianFontDatabaseExtrasImplementation *dbExtras =
+ static_cast<const QSymbianFontDatabaseExtrasImplementation*>(privateDb()->symbianExtras);
+ dbExtras->m_store->ReleaseFont(font);
+ }
+ };
+#endif // !Q_SYMBIAN_HAS_FONTTABLE_API
+
+ struct CFontFromScreenDeviceReleaser {
+ static inline void cleanup(CFont *font)
+ {
+ if (!font)
+ return;
+ QS60Data::screenDevice()->ReleaseFont(font);
+ }
+ };
+
private:
+#ifndef Q_SYMBIAN_HAS_FONTTABLE_API
RHeap* m_heap;
CFontStore *m_store;
COpenFontRasterizer *m_rasterizer;
mutable QList<const QSymbianTypeFaceExtras *> m_extras;
+#endif // !Q_SYMBIAN_HAS_FONTTABLE_API
mutable QHash<QString, const QSymbianTypeFaceExtras *> m_extrasHash;
};
QSymbianFontDatabaseExtrasImplementation::QSymbianFontDatabaseExtrasImplementation()
{
+#ifndef Q_SYMBIAN_HAS_FONTTABLE_API
QStringList filters;
filters.append(QLatin1String("*.ttf"));
filters.append(QLatin1String("*.ccc"));
@@ -131,10 +156,14 @@ QSymbianFontDatabaseExtrasImplementation::QSymbianFontDatabaseExtrasImplementati
TPtrC fontFilePtr(qt_QString2TPtrC(fontFile));
QT_TRAP_THROWING(m_store->AddFileL(fontFilePtr));
}
+#endif // !Q_SYMBIAN_HAS_FONTTABLE_API
}
QSymbianFontDatabaseExtrasImplementation::~QSymbianFontDatabaseExtrasImplementation()
{
+#ifdef Q_SYMBIAN_HAS_FONTTABLE_API
+ qDeleteAll(m_extrasHash);
+#else // Q_SYMBIAN_HAS_FONTTABLE_API
typedef QList<const QSymbianTypeFaceExtras *>::iterator iterator;
for (iterator p = m_extras.begin(); p != m_extras.end(); ++p) {
m_store->ReleaseFont((*p)->fontOwner());
@@ -143,6 +172,7 @@ QSymbianFontDatabaseExtrasImplementation::~QSymbianFontDatabaseExtrasImplementat
delete m_store;
m_heap->Close();
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API
}
#ifndef FNTSTORE_H_INLINES_SUPPORT_FMM
@@ -167,26 +197,37 @@ const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(c
{
const QString searchKey = typeface + QString::number(int(bold)) + QString::number(int(italic));
if (!m_extrasHash.contains(searchKey)) {
- CFont* font = NULL;
TFontSpec searchSpec(qt_QString2TPtrC(typeface), 1);
if (bold)
searchSpec.iFontStyle.SetStrokeWeight(EStrokeWeightBold);
if (italic)
searchSpec.iFontStyle.SetPosture(EPostureItalic);
+
+ CFont* font = NULL;
+#ifdef Q_SYMBIAN_HAS_FONTTABLE_API
+ const TInt err = QS60Data::screenDevice()->GetNearestFontToDesignHeightInPixels(font, searchSpec);
+ Q_ASSERT(err == KErrNone && font);
+ QScopedPointer<CFont, CFontFromScreenDeviceReleaser> sFont(font);
+ QSymbianTypeFaceExtras *extras = new QSymbianTypeFaceExtras(font);
+ sFont.take();
+ m_extrasHash.insert(searchKey, extras);
+#else // Q_SYMBIAN_HAS_FONTTABLE_API
const TInt err = m_store->GetNearestFontToDesignHeightInPixels(font, searchSpec);
Q_ASSERT(err == KErrNone && font);
const CBitmapFont *bitmapFont = static_cast<CBitmapFont*>(font);
COpenFont *openFont =
#ifdef FNTSTORE_H_INLINES_SUPPORT_FMM
- bitmapFont->openFont();
-#else
+ bitmapFont->OpenFont();
+#else // FNTSTORE_H_INLINES_SUPPORT_FMM
OpenFontFromBitmapFont(bitmapFont);
#endif // FNTSTORE_H_INLINES_SUPPORT_FMM
const TOpenFontFaceAttrib* const attrib = openFont->FaceAttrib();
const QString foundKey =
QString((const QChar*)attrib->FullName().Ptr(), attrib->FullName().Length());
if (!m_extrasHash.contains(foundKey)) {
+ QScopedPointer<CFont, CFontFromFontStoreReleaser> sFont(font);
QSymbianTypeFaceExtras *extras = new QSymbianTypeFaceExtras(font, openFont);
+ sFont.take();
m_extras.append(extras);
m_extrasHash.insert(searchKey, extras);
m_extrasHash.insert(foundKey, extras);
@@ -194,10 +235,11 @@ const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(c
m_store->ReleaseFont(font);
m_extrasHash.insert(searchKey, m_extrasHash.value(foundKey));
}
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API
}
return m_extrasHash.value(searchKey);
}
-#else
+#else // QT_NO_FREETYPE
class QFontEngineFTS60 : public QFontEngineFT
{
public:
@@ -209,7 +251,7 @@ QFontEngineFTS60::QFontEngineFTS60(const QFontDef &fd)
{
default_hint_style = HintFull;
}
-#endif // defined(QT_NO_FREETYPE)
+#endif // QT_NO_FREETYPE
/*
QFontEngineS60::pixelsToPoints, QFontEngineS60::pointsToPixels, QFontEngineMultiS60::QFontEngineMultiS60
@@ -261,12 +303,12 @@ static void initializeDb()
if(!db || db->count)
return;
-#if defined(QT_NO_FREETYPE)
+#ifdef QT_NO_FREETYPE
if (!db->symbianExtras)
db->symbianExtras = new QSymbianFontDatabaseExtrasImplementation;
QSymbianFbsHeapLock lock(QSymbianFbsHeapLock::Unlock);
-
+
const int numTypeFaces = QS60Data::screenDevice()->NumTypefaces();
const QSymbianFontDatabaseExtrasImplementation *dbExtras =
static_cast<const QSymbianFontDatabaseExtrasImplementation*>(db->symbianExtras);
@@ -278,6 +320,7 @@ static void initializeDb()
TFontSpec fontSpec(typefaceSupport.iTypeface.iName, 11);
if (QS60Data::screenDevice()->GetNearestFontInPixels(font, fontSpec) != KErrNone)
continue;
+ QScopedPointer<CFont, QSymbianFontDatabaseExtrasImplementation::CFontFromScreenDeviceReleaser> sFont(font);
if (font->TypeUid() == KCFbsFontUid) {
TOpenFontFaceAttrib faceAttrib;
const CFbsFont *cfbsFont = static_cast<const CFbsFont *>(font);
@@ -318,14 +361,13 @@ static void initializeDb()
fontAdded = true;
}
- QS60Data::screenDevice()->ReleaseFont(font);
}
Q_ASSERT(fontAdded);
- lock.relock();
+ lock.relock();
-#else // defined(QT_NO_FREETYPE)
+#else // QT_NO_FREETYPE
QDir dir(QDesktopServices::storageLocation(QDesktopServices::FontsLocation));
dir.setNameFilters(QStringList() << QLatin1String("*.ttf")
<< QLatin1String("*.ttc") << QLatin1String("*.pfa")
@@ -334,7 +376,7 @@ static void initializeDb()
const QByteArray file = QFile::encodeName(dir.absoluteFilePath(dir[i]));
db->addTTFile(file);
}
-#endif // defined(QT_NO_FREETYPE)
+#endif // QT_NO_FREETYPE
}
static inline void load(const QString &family = QString(), int script = -1)
@@ -416,13 +458,13 @@ QFontEngine *QFontDatabase::findFont(int script, const QFontPrivate *, const QFo
const QString fontFamily = desc.family->name;
QFontDef request = req;
request.family = fontFamily;
-#if defined(QT_NO_FREETYPE)
+#ifdef QT_NO_FREETYPE
const QSymbianFontDatabaseExtrasImplementation *dbExtras =
static_cast<const QSymbianFontDatabaseExtrasImplementation*>(db->symbianExtras);
const QSymbianTypeFaceExtras *typeFaceExtras =
dbExtras->extras(fontFamily, request.weight > QFont::Normal, request.style != QFont::StyleNormal);
fe = new QFontEngineS60(request, typeFaceExtras);
-#else
+#else // QT_NO_FREETYPE
QFontEngine::FaceId faceId;
const QtFontFamily * const reqQtFontFamily = db->family(fontFamily);
faceId.filename = reqQtFontFamily->fontFilename;
@@ -433,7 +475,7 @@ QFontEngine *QFontDatabase::findFont(int script, const QFontPrivate *, const QFo
fe = fte;
else
delete fte;
-#endif
+#endif // QT_NO_FREETYPE
Q_ASSERT(fe);
if (script == QUnicodeTables::Common
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp
index 449dffd..9056012 100644
--- a/src/gui/text/qfontengine_ft.cpp
+++ b/src/gui/text/qfontengine_ft.cpp
@@ -58,6 +58,7 @@
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_OUTLINE_H
+#include FT_SYNTHESIS_H
#include FT_TRUETYPE_TABLES_H
#include FT_TYPE1_TABLES_H
#include FT_GLYPH_H
@@ -617,6 +618,7 @@ QFontEngineFT::QFontEngineFT(const QFontDef &fd)
cache_cost = 100;
kerning_pairs_loaded = false;
transform = false;
+ embolden = false;
antialias = true;
freetype = 0;
default_load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
@@ -679,10 +681,7 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format)
FT_Face face = lockFace();
- //underline metrics
if (FT_IS_SCALABLE(face)) {
- line_thickness = QFixed::fromFixed(FT_MulFix(face->underline_thickness, face->size->metrics.y_scale));
- underline_position = QFixed::fromFixed(-FT_MulFix(face->underline_position, face->size->metrics.y_scale));
bool fake_oblique = (fontDef.style != QFont::StyleNormal) && !(face->style_flags & FT_STYLE_FLAG_ITALIC);
if (fake_oblique)
matrix.xy = 0x10000*3/10;
@@ -690,6 +689,12 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format)
freetype->matrix = matrix;
if (fake_oblique)
transform = true;
+ // fake bold
+ if ((fontDef.weight == QFont::Bold) && !(face->style_flags & FT_STYLE_FLAG_BOLD))
+ embolden = true;
+ // underline metrics
+ line_thickness = QFixed::fromFixed(FT_MulFix(face->underline_thickness, face->size->metrics.y_scale));
+ underline_position = QFixed::fromFixed(-FT_MulFix(face->underline_position, face->size->metrics.y_scale));
} else {
// copied from QFontEngineQPF
// ad hoc algorithm
@@ -789,6 +794,7 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyphMetrics(QGlyphSet *set, uint glyph
}
FT_GlyphSlot slot = face->glyph;
+ if (embolden) FT_GlyphSlot_Embolden(slot);
int left = slot->metrics.horiBearingX;
int right = slot->metrics.horiBearingX + slot->metrics.width;
int top = slot->metrics.horiBearingY;
@@ -934,6 +940,7 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph, Glyph
return 0;
FT_GlyphSlot slot = face->glyph;
+ if (embolden) FT_GlyphSlot_Embolden(slot);
FT_Library library = qt_getFreetype();
info.xOff = TRUNC(ROUND(slot->advance.x));
@@ -1209,6 +1216,8 @@ int QFontEngineFT::synthesized() const
int s = 0;
if ((fontDef.style != QFont::StyleNormal) && !(freetype->face->style_flags & FT_STYLE_FLAG_ITALIC))
s = SynthesizedItalic;
+ if ((fontDef.weight == QFont::Bold) && !(freetype->face->style_flags & FT_STYLE_FLAG_BOLD))
+ s |= SynthesizedBold;
if (fontDef.stretch != 100 && FT_IS_SCALABLE(freetype->face))
s |= SynthesizedStretch;
return s;
diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h
index 12b7da8..2f05a8b 100644
--- a/src/gui/text/qfontengine_ft_p.h
+++ b/src/gui/text/qfontengine_ft_p.h
@@ -304,6 +304,7 @@ protected:
bool antialias;
bool transform;
+ bool embolden;
SubpixelAntialiasingType subpixelType;
int lcdFilterType;
bool canUploadGlyphsToServer;
diff --git a/src/gui/text/qfontengine_s60.cpp b/src/gui/text/qfontengine_s60.cpp
index 93f02ff..925b3bf 100644
--- a/src/gui/text/qfontengine_s60.cpp
+++ b/src/gui/text/qfontengine_s60.cpp
@@ -50,21 +50,73 @@
#include <e32std.h>
#include <eikenv.h>
#include <gdi.h>
+#if defined(Q_SYMBIAN_HAS_FONTTABLE_API) || defined(Q_SYMBIAN_HAS_GLYPHOUTLINE_API)
+#include <graphics/gdi/gdiplatapi.h>
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API || Q_SYMBIAN_HAS_GLYPHOUTLINE_API
QT_BEGIN_NAMESPACE
-QSymbianTypeFaceExtras::QSymbianTypeFaceExtras(CFont* fontOwner, COpenFont *font)
- : m_font(font)
- , m_cmap(0)
+#ifdef Q_SYMBIAN_HAS_FONTTABLE_API
+QSymbianTypeFaceExtras::QSymbianTypeFaceExtras(CFont* cFont, COpenFont *openFont)
+ : m_cFont(cFont)
, m_symbolCMap(false)
- , m_fontOwner(fontOwner)
+{
+ Q_UNUSED(openFont)
+}
+
+QSymbianTypeFaceExtras::~QSymbianTypeFaceExtras()
+{
+ QS60Data::screenDevice()->ReleaseFont(m_cFont);
+}
+
+QByteArray QSymbianTypeFaceExtras::getSfntTable(uint tag) const
+{
+ RFontTable fontTable;
+ if (fontTable.Open(*m_cFont, tag) != KErrNone)
+ return QByteArray();
+ const QByteArray byteArray(reinterpret_cast<const char *>
+ (fontTable.TableContent()),fontTable.TableLength());
+ fontTable.Close();
+ return byteArray;
+}
+
+bool QSymbianTypeFaceExtras::getSfntTableData(uint tag, uchar *buffer, uint *length) const
+{
+ RFontTable fontTable;
+ if (fontTable.Open(*m_cFont, tag) != KErrNone)
+ return false;
+
+ bool result = true;
+ const TInt tableByteLength = fontTable.TableLength();
+
+ if (*length > 0 && *length < tableByteLength) {
+ result = false; // Caller did not allocate enough memory
+ } else {
+ *length = tableByteLength;
+ if (buffer)
+ qMemCopy(buffer, fontTable.TableContent(), tableByteLength);
+ }
+
+ fontTable.Close();
+ return result;
+}
+
+#else // Q_SYMBIAN_HAS_FONTTABLE_API
+QSymbianTypeFaceExtras::QSymbianTypeFaceExtras(CFont* cFont, COpenFont *openFont)
+ : m_cFont(cFont)
+ , m_symbolCMap(false)
+ , m_openFont(openFont)
{
TAny *trueTypeExtension = NULL;
- m_font->ExtendedInterface(KUidOpenFontTrueTypeExtension, trueTypeExtension);
+ m_openFont->ExtendedInterface(KUidOpenFontTrueTypeExtension, trueTypeExtension);
m_trueTypeExtension = static_cast<MOpenFontTrueTypeExtension*>(trueTypeExtension);
Q_ASSERT(m_trueTypeExtension);
}
+QSymbianTypeFaceExtras::~QSymbianTypeFaceExtras()
+{
+}
+
QByteArray QSymbianTypeFaceExtras::getSfntTable(uint tag) const
{
Q_ASSERT(m_trueTypeExtension->HasTrueTypeTable(tag));
@@ -100,23 +152,25 @@ bool QSymbianTypeFaceExtras::getSfntTableData(uint tag, uchar *buffer, uint *len
m_trueTypeExtension->ReleaseTrueTypeTable(table);
return result;
}
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API
-const unsigned char *QSymbianTypeFaceExtras::cmap() const
+const uchar *QSymbianTypeFaceExtras::cmap() const
{
- if (!m_cmap) {
- m_cmapTable = getSfntTable(MAKE_TAG('c', 'm', 'a', 'p'));
+ if (m_cmapTable.isNull()) {
+ const QByteArray cmapTable = getSfntTable(MAKE_TAG('c', 'm', 'a', 'p'));
int size = 0;
- m_cmap = QFontEngineS60::getCMap(reinterpret_cast<const uchar *>(m_cmapTable.constData()), m_cmapTable.size(), &m_symbolCMap, &size);
+ const uchar *cmap = QFontEngine::getCMap(reinterpret_cast<const uchar *>
+ (cmapTable.constData()), cmapTable.size(), &m_symbolCMap, &size);
+ m_cmapTable = QByteArray(reinterpret_cast<const char *>(cmap), size);
}
- return m_cmap;
+ return reinterpret_cast<const uchar *>(m_cmapTable.constData());
}
CFont *QSymbianTypeFaceExtras::fontOwner() const
{
- return m_fontOwner;
+ return m_cFont;
}
-
// duplicated from qfontengine_xyz.cpp
static inline unsigned int getChar(const QChar *str, int &i, const int len)
{
@@ -225,6 +279,35 @@ void QFontEngineS60::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFla
}
}
+#ifdef Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+static bool parseGlyphPathData(const char *dataStr, const char *dataEnd, QPainterPath &path,
+ qreal fontPixelSize, const QPointF &offset, bool hinted);
+#endif //Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+
+void QFontEngineS60::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions,
+ int nglyphs, QPainterPath *path,
+ QTextItem::RenderFlags flags)
+{
+#ifdef Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+ Q_UNUSED(flags)
+ RGlyphOutlineIterator iterator;
+ const TInt error = iterator.Open(*m_activeFont, glyphs, nglyphs);
+ if (KErrNone != error)
+ return;
+ const qreal fontSizeInPixels = qreal(m_activeFont->HeightInPixels());
+ int count = 0;
+ do {
+ const TUint8* outlineUint8 = iterator.Outline();
+ const char* const outlineChar = reinterpret_cast<const char*>(outlineUint8);
+ const char* const outlineEnd = outlineChar + iterator.OutlineLength();
+ parseGlyphPathData(outlineChar, outlineEnd, *path, fontSizeInPixels,
+ positions[count++].toPointF(), false);
+ } while(KErrNone == iterator.Next() && count <= nglyphs);
+#else // Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+ QFontEngine::addGlyphsToPath(glyphs, positions, nglyphs, path, flags);
+#endif //Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+}
+
QImage QFontEngineS60::alphaMapForGlyph(glyph_t glyph)
{
TOpenFontCharMetrics metrics;
@@ -356,4 +439,69 @@ void QFontEngineS60::getCharacterData(glyph_t glyph, TOpenFontCharMetrics& metri
}
}
+#ifdef Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+static inline void skipSpacesAndComma(const char* &str, const char* const strEnd)
+{
+ while (str <= strEnd && (*str == ' ' || *str == ','))
+ ++str;
+}
+
+static bool parseGlyphPathData(const char *svgPath, const char *svgPathEnd, QPainterPath &path,
+ qreal fontPixelSize, const QPointF &offset, bool hinted)
+{
+ Q_UNUSED(hinted)
+ QPointF p1, p2, firstSubPathPoint;
+ qreal *elementValues[] =
+ {&p1.rx(), &p1.ry(), &p2.rx(), &p2.ry()};
+ const int unitsPerEm = 2048; // See: http://en.wikipedia.org/wiki/Em_%28typography%29
+ const qreal resizeFactor = fontPixelSize / unitsPerEm;
+
+ while (svgPath < svgPathEnd) {
+ skipSpacesAndComma(svgPath, svgPathEnd);
+ const char pathElem = *svgPath++;
+ skipSpacesAndComma(svgPath, svgPathEnd);
+
+ if (pathElem != 'Z') {
+ char *endStr = 0;
+ int elementValuesCount = 0;
+ for (int i = 0; i < 4; ++i) { // 4 = size of elementValues[]
+ qreal coordinateValue = strtod(svgPath, &endStr);
+ if (svgPath == endStr)
+ break;
+ if (i % 2) // Flip vertically
+ coordinateValue = -coordinateValue;
+ *elementValues[i] = coordinateValue * resizeFactor;
+ elementValuesCount++;
+ svgPath = endStr;
+ skipSpacesAndComma(svgPath, svgPathEnd);
+ }
+ p1 += offset;
+ if (elementValuesCount == 2)
+ p2 = firstSubPathPoint;
+ else
+ p2 += offset;
+ }
+
+ switch (pathElem) {
+ case 'M':
+ firstSubPathPoint = p1;
+ path.moveTo(p1);
+ break;
+ case 'Z':
+ path.closeSubpath();
+ break;
+ case 'L':
+ path.lineTo(p1);
+ break;
+ case 'Q':
+ path.quadTo(p1, p2);
+ break;
+ default:
+ return false;
+ }
+ }
+ return true;
+}
+#endif // Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+
QT_END_NAMESPACE
diff --git a/src/gui/text/qfontengine_s60_p.h b/src/gui/text/qfontengine_s60_p.h
index 6883730..beeb4cc 100644
--- a/src/gui/text/qfontengine_s60_p.h
+++ b/src/gui/text/qfontengine_s60_p.h
@@ -58,6 +58,14 @@
#include "qsize.h"
#include <openfont.h>
+#ifdef SYMBIAN_GDI_GLYPHDATA
+#define Q_SYMBIAN_HAS_FONTTABLE_API
+#endif
+
+#ifdef Q_SYMBIAN_HAS_FONTTABLE_API
+#define Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API
+
class CFont;
QT_BEGIN_NAMESPACE
@@ -66,20 +74,22 @@ QT_BEGIN_NAMESPACE
class QSymbianTypeFaceExtras
{
public:
- QSymbianTypeFaceExtras(CFont* fontOwner, COpenFont *font);
+ QSymbianTypeFaceExtras(CFont* cFont, COpenFont *openFont = 0);
+ ~QSymbianTypeFaceExtras();
QByteArray getSfntTable(uint tag) const;
bool getSfntTableData(uint tag, uchar *buffer, uint *length) const;
- const unsigned char *cmap() const;
+ const uchar *cmap() const;
CFont *fontOwner() const;
private:
- COpenFont *m_font;
- mutable MOpenFontTrueTypeExtension *m_trueTypeExtension;
- mutable const unsigned char *m_cmap;
+ CFont* m_cFont;
mutable bool m_symbolCMap;
mutable QByteArray m_cmapTable;
- CFont* m_fontOwner;
+#ifndef Q_SYMBIAN_HAS_FONTTABLE_API
+ COpenFont *m_openFont;
+ mutable MOpenFontTrueTypeExtension *m_trueTypeExtension;
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API
};
class QFontEngineS60 : public QFontEngine
@@ -91,6 +101,9 @@ public:
bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
void recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const;
+ void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags);
+
QImage alphaMapForGlyph(glyph_t glyph);
glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index 5163c94..d02e841 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -526,6 +526,14 @@ int QFontMetrics::rightBearing(QChar ch) const
*/
int QFontMetrics::width(const QString &text, int len) const
{
+ return width(text, len, 0);
+}
+
+/*!
+ \internal
+*/
+int QFontMetrics::width(const QString &text, int len, int flags) const
+{
int pos = text.indexOf(QLatin1Char('\x9c'));
if (pos != -1) {
len = (len < 0) ? pos : qMin(pos, len);
@@ -535,6 +543,23 @@ int QFontMetrics::width(const QString &text, int len) const
if (len == 0)
return 0;
+ if (flags & Qt::TextBypassShaping) {
+ // Skip harfbuzz complex shaping, only use advances
+ int numGlyphs = len;
+ QVarLengthGlyphLayoutArray glyphs(numGlyphs);
+ QFontEngine *engine = d->engineForScript(QUnicodeTables::Common);
+ if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0)) {
+ glyphs.resize(numGlyphs);
+ if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0))
+ Q_ASSERT_X(false, Q_FUNC_INFO, "stringToCMap shouldn't fail twice");
+ }
+
+ QFixed width;
+ for (int i = 0; i < numGlyphs; ++i)
+ width += glyphs.advances_x[i];
+ return qRound(width);
+ }
+
QStackTextEngine layout(text, d.data());
layout.ignoreBidi = true;
return qRound(layout.width(0, len));
diff --git a/src/gui/text/qfontmetrics.h b/src/gui/text/qfontmetrics.h
index dca4b93..2518b54 100644
--- a/src/gui/text/qfontmetrics.h
+++ b/src/gui/text/qfontmetrics.h
@@ -89,6 +89,7 @@ public:
int leftBearing(QChar) const;
int rightBearing(QChar) const;
int width(const QString &, int len = -1) const;
+ int width(const QString &, int len, int flags) const;
int width(QChar) const;
int charWidth(const QString &str, int pos) const;
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index 84c1d96..10870aa 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -115,10 +115,12 @@ QT_BEGIN_NAMESPACE
Qt::RichText.
If it's the first time the static text is drawn, or if the static text, or the painter's font
- or matrix have been altered since the last time it was drawn, the text's layout has to be
- recalculated. This will impose an overhead on the QPainter::drawStaticText() call where the
- relayout occurs. To avoid this overhead in the paint event, you can call prepare() ahead of
- time to ensure that the layout is calculated.
+ has been altered since the last time it was drawn, the text's layout has to be
+ recalculated. On some paint engines, changing the matrix of the painter will also cause the
+ layout to be recalculated. In particular, this will happen for any engine except for the
+ OpenGL2 paint engine. Recalculating the layout will impose an overhead on the
+ QPainter::drawStaticText() call where it occurs. To avoid this overhead in the paint event, you
+ can call prepare() ahead of time to ensure that the layout is calculated.
\sa QPainter::drawText(), QPainter::drawStaticText(), QTextLayout, QTextDocument
*/
@@ -188,8 +190,9 @@ void QStaticText::detach()
When drawStaticText() is called, the layout of the QStaticText will be recalculated if any part
of the QStaticText object has changed since the last time it was drawn. It will also be
- recalculated if the painter's font or matrix are not the same as when the QStaticText was last
- drawn.
+ recalculated if the painter's font is not the same as when the QStaticText was last drawn, or,
+ on any other paint engine than the OpenGL2 engine, if the painter's matrix has been altered
+ since the static text was last drawn.
To avoid the overhead of creating the layout the first time you draw the QStaticText after
making changes, you can use the prepare() function and pass in the \a matrix and \a font you
@@ -364,14 +367,16 @@ QSizeF QStaticText::size() const
QStaticTextPrivate::QStaticTextPrivate()
: textWidth(-1.0), items(0), itemCount(0), glyphPool(0), positionPool(0), charPool(0),
- needsRelayout(true), useBackendOptimizations(false), textFormat(Qt::AutoText)
+ needsRelayout(true), useBackendOptimizations(false), textFormat(Qt::AutoText),
+ untransformedCoordinates(false)
{
}
QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
: text(other.text), font(other.font), textWidth(other.textWidth), matrix(other.matrix),
items(0), itemCount(0), glyphPool(0), positionPool(0), charPool(0), needsRelayout(true),
- useBackendOptimizations(other.useBackendOptimizations), textFormat(other.textFormat)
+ useBackendOptimizations(other.useBackendOptimizations), textFormat(other.textFormat),
+ untransformedCoordinates(other.untransformedCoordinates)
{
}
@@ -396,8 +401,9 @@ namespace {
class DrawTextItemRecorder: public QPaintEngine
{
public:
- DrawTextItemRecorder(bool useBackendOptimizations, int numChars)
- : m_dirtyPen(false), m_useBackendOptimizations(useBackendOptimizations)
+ DrawTextItemRecorder(bool untransformedCoordinates, bool useBackendOptimizations, int numChars)
+ : m_dirtyPen(false), m_useBackendOptimizations(useBackendOptimizations),
+ m_untransformedCoordinates(untransformedCoordinates)
{
}
@@ -423,7 +429,7 @@ namespace {
if (m_dirtyPen)
currentItem.color = state->pen().color();
- QTransform matrix = state->transform();
+ QTransform matrix = m_untransformedCoordinates ? QTransform() : state->transform();
matrix.translate(position.x(), position.y());
QVarLengthArray<glyph_t> glyphs;
@@ -486,14 +492,17 @@ namespace {
bool m_dirtyPen;
bool m_useBackendOptimizations;
+ bool m_untransformedCoordinates;
};
class DrawTextItemDevice: public QPaintDevice
{
public:
- DrawTextItemDevice(bool useBackendOptimizations, int numChars)
+ DrawTextItemDevice(bool untransformedCoordinates, bool useBackendOptimizations,
+ int numChars)
{
- m_paintEngine = new DrawTextItemRecorder(useBackendOptimizations, numChars);
+ m_paintEngine = new DrawTextItemRecorder(untransformedCoordinates,
+ useBackendOptimizations, numChars);
}
~DrawTextItemDevice()
@@ -629,7 +638,7 @@ void QStaticTextPrivate::init()
position = QPointF(0, 0);
- DrawTextItemDevice device(useBackendOptimizations, text.size());
+ DrawTextItemDevice device(untransformedCoordinates, useBackendOptimizations, text.size());
{
QPainter painter(&device);
painter.setFont(font);
diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h
index 2ab5579..1a96291 100644
--- a/src/gui/text/qstatictext_p.h
+++ b/src/gui/text/qstatictext_p.h
@@ -148,9 +148,10 @@ public:
QFixedPoint *positionPool; // 4 bytes per text
QChar *charPool; // 4 bytes per text
- unsigned char needsRelayout : 1;
- unsigned char useBackendOptimizations : 1; // 1 byte per text
- unsigned char textFormat : 2;
+ unsigned char needsRelayout : 1; // 1 byte per text
+ unsigned char useBackendOptimizations : 1;
+ unsigned char textFormat : 2;
+ unsigned char untransformedCoordinates : 1;
// ================
// 167 bytes per text
diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp
index c91df3c..a9caa6b 100644
--- a/src/gui/text/qtextcursor.cpp
+++ b/src/gui/text/qtextcursor.cpp
@@ -64,7 +64,7 @@ enum {
QTextCursorPrivate::QTextCursorPrivate(QTextDocumentPrivate *p)
: priv(p), x(0), position(0), anchor(0), adjusted_anchor(0),
- currentCharFormat(-1), visualNavigation(false)
+ currentCharFormat(-1), visualNavigation(false), keepPositionOnInsert(false)
{
priv->addCursor(this);
}
@@ -79,6 +79,7 @@ QTextCursorPrivate::QTextCursorPrivate(const QTextCursorPrivate &rhs)
x = rhs.x;
currentCharFormat = rhs.currentCharFormat;
visualNavigation = rhs.visualNavigation;
+ keepPositionOnInsert = rhs.keepPositionOnInsert;
priv->addCursor(this);
}
@@ -95,7 +96,7 @@ QTextCursorPrivate::AdjustResult QTextCursorPrivate::adjustPosition(int position
if (position < positionOfChange
|| (position == positionOfChange
&& (op == QTextUndoCommand::KeepCursor
- || anchor < position)
+ || keepPositionOnInsert)
)
) {
result = CursorUnchanged;
@@ -361,7 +362,7 @@ bool QTextCursorPrivate::movePosition(QTextCursor::MoveOperation op, QTextCursor
QTextBlock blockIt = block();
if (op >= QTextCursor::Left && op <= QTextCursor::WordRight
- && blockIt.blockFormat().layoutDirection() == Qt::RightToLeft) {
+ && blockIt.textDirection() == Qt::RightToLeft) {
if (op == QTextCursor::Left)
op = QTextCursor::NextCharacter;
else if (op == QTextCursor::Right)
@@ -1276,6 +1277,80 @@ void QTextCursor::setVisualNavigation(bool b)
d->visualNavigation = b;
}
+
+/*!
+ \since 4.7
+
+ Sets the visual x position for vertical cursor movements.
+
+ The vertical movement x position is cleared automatically when the cursor moves horizontally, and kept
+ unchanged when the cursor moves vertically. The mechanism allows the cursor to move up and down on a
+ visually straight line with proportional fonts, and to gently "jump" over short lines.
+
+ A value of -1 indicates no predefined x position. It will then be set automatically the next time the
+ cursor moves up or down.
+
+ \sa verticalMovementX()
+ */
+void QTextCursor::setVerticalMovementX(int x)
+{
+ if (d)
+ d->x = x;
+}
+
+/*! \since 4.7
+
+ Returns the visual x position for vertical cursor movements.
+
+ A value of -1 indicates no predefined x position. It will then be set automatically the next time the
+ cursor moves up or down.
+
+ \sa setVerticalMovementX()
+ */
+int QTextCursor::verticalMovementX() const
+{
+ return d ? d->x : -1;
+}
+
+/*!
+ \since 4.7
+
+ Returns whether the cursor should keep its current position when text gets inserted at the position of the
+ cursor.
+
+ The default is false;
+
+ \sa setKeepPositionOnInsert()
+ */
+bool QTextCursor::keepPositionOnInsert() const
+{
+ return d ? d->keepPositionOnInsert : false;
+}
+
+/*!
+ \since 4.7
+
+ Defines whether the cursor should keep its current position when text gets inserted at the current position of the
+ cursor.
+
+ If \b is true, the cursor keeps its current position when text gets inserted at the positing of the cursor.
+ If \b is false, the cursor moves along with the inserted text.
+
+ The default is false.
+
+ Note that a cursor always moves when text is inserted before the current position of the cursor, and it
+ always keeps its position when text is inserted after the current position of the cursor.
+
+ \sa keepPositionOnInsert()
+ */
+void QTextCursor::setKeepPositionOnInsert(bool b)
+{
+ if (d)
+ d->keepPositionOnInsert = b;
+}
+
+
+
/*!
Inserts \a text at the current position, using the current
character format.
@@ -1408,16 +1483,16 @@ void QTextCursor::deletePreviousChar()
{
if (!d || !d->priv)
return;
-
+
if (d->position != d->anchor) {
removeSelectedText();
return;
}
-
+
if (d->anchor < 1 || !d->canDelete(d->anchor-1))
return;
d->anchor--;
-
+
QTextDocumentPrivate::FragmentIterator fragIt = d->priv->find(d->anchor);
const QTextFragmentData * const frag = fragIt.value();
int fpos = fragIt.position();
@@ -1429,7 +1504,7 @@ void QTextCursor::deletePreviousChar()
if (uc.unicode() >= 0xd800 && uc.unicode() < 0xdc00)
--d->anchor;
}
-
+
d->adjusted_anchor = d->anchor;
d->remove();
d->setX();
@@ -2362,6 +2437,9 @@ void QTextCursor::beginEditBlock()
if (!d || !d->priv)
return;
+ if (d->priv->editBlock == 0) // we are the initial edit block, store current cursor position for undo
+ d->priv->editBlockCursorPosition = d->position;
+
d->priv->beginEditBlock();
}
diff --git a/src/gui/text/qtextcursor.h b/src/gui/text/qtextcursor.h
index 3e968a3..251cb33 100644
--- a/src/gui/text/qtextcursor.h
+++ b/src/gui/text/qtextcursor.h
@@ -132,6 +132,12 @@ public:
bool visualNavigation() const;
void setVisualNavigation(bool b);
+ void setVerticalMovementX(int x);
+ int verticalMovementX() const;
+
+ void setKeepPositionOnInsert(bool b);
+ bool keepPositionOnInsert() const;
+
void deleteChar();
void deletePreviousChar();
diff --git a/src/gui/text/qtextcursor_p.h b/src/gui/text/qtextcursor_p.h
index 1bdfa78..4e36b95 100644
--- a/src/gui/text/qtextcursor_p.h
+++ b/src/gui/text/qtextcursor_p.h
@@ -112,7 +112,8 @@ public:
int anchor;
int adjusted_anchor;
int currentCharFormat;
- bool visualNavigation;
+ uint visualNavigation : 1;
+ uint keepPositionOnInsert : 1;
};
QT_END_NAMESPACE
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index c7a9756..48aee8f 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -2496,13 +2496,10 @@ void QTextHtmlExporter::emitBlockAttributes(const QTextBlock &block)
QTextBlockFormat format = block.blockFormat();
emitAlignment(format.alignment());
- Qt::LayoutDirection dir = format.layoutDirection();
- if (dir == Qt::LeftToRight) {
- // assume default to not bloat the html too much
- // html += QLatin1String(" dir='ltr'");
- } else {
+ // assume default to not bloat the html too much
+ // html += QLatin1String(" dir='ltr'");
+ if (block.textDirection() == Qt::RightToLeft)
html += QLatin1String(" dir='rtl'");
- }
QLatin1String style(" style=\"");
html += style;
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index e2bca04..f3cd481 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -192,6 +192,7 @@ QTextDocumentPrivate::QTextDocumentPrivate()
initialBlockCharFormatIndex(-1) // set correctly later in init()
{
editBlock = 0;
+ editBlockCursorPosition = -1;
docChangeFrom = -1;
undoState = 0;
@@ -967,6 +968,10 @@ int QTextDocumentPrivate::undoRedo(bool undo)
editPos = -1;
break;
}
+ case QTextUndoCommand::CursorMoved:
+ editPos = c.pos;
+ editLength = 0;
+ break;
case QTextUndoCommand::Custom:
resetBlockRevision = -1; // ## TODO
if (undo)
@@ -1046,6 +1051,18 @@ void QTextDocumentPrivate::appendUndoItem(const QTextUndoCommand &c)
if (undoState < undoStack.size())
clearUndoRedoStacks(QTextDocument::RedoStack);
+ if (editBlock != 0 && editBlockCursorPosition >= 0) { // we had a beginEditBlock() with a cursor position
+ if (c.pos != (quint32) editBlockCursorPosition) { // and that cursor position is different from the command
+ // generate a CursorMoved undo item
+ QT_INIT_TEXTUNDOCOMMAND(cc, QTextUndoCommand::CursorMoved, true, QTextUndoCommand::MoveCursor,
+ 0, 0, editBlockCursorPosition, 0, 0);
+ undoStack.append(cc);
+ undoState++;
+ editBlockCursorPosition = -1;
+ }
+ }
+
+
if (!undoStack.isEmpty() && modified) {
QTextUndoCommand &last = undoStack[undoState - 1];
@@ -1167,6 +1184,8 @@ void QTextDocumentPrivate::endEditBlock()
}
}
+ editBlockCursorPosition = -1;
+
finishEdit();
}
diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h
index ac5ed3c..d1bd698 100644
--- a/src/gui/text/qtextdocument_p.h
+++ b/src/gui/text/qtextdocument_p.h
@@ -132,6 +132,7 @@ public:
BlockAdded = 6,
BlockDeleted = 7,
GroupFormatChange = 8,
+ CursorMoved = 9,
Custom = 256
};
enum Operation {
@@ -315,6 +316,7 @@ private:
bool modified;
int editBlock;
+ int editBlockCursorPosition;
int docChangeFrom;
int docChangeOldLength;
int docChangeLength;
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index f12bf0b..ff14490 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -79,7 +79,7 @@ Q_GUI_EXPORT extern int qt_defaultDpi();
// ################ should probably add frameFormatChange notification!
-struct QLayoutStruct;
+struct QTextLayoutStruct;
class QTextFrameData : public QTextFrameLayoutData
{
@@ -109,7 +109,7 @@ public:
QFixed minimumWidth;
QFixed maximumWidth;
- QLayoutStruct *currentLayoutStruct;
+ QTextLayoutStruct *currentLayoutStruct;
bool sizeDirty;
bool layoutDirty;
@@ -123,8 +123,8 @@ QTextFrameData::QTextFrameData()
{
}
-struct QLayoutStruct {
- QLayoutStruct() : maximumWidth(QFIXED_MAX), fullLayout(false)
+struct QTextLayoutStruct {
+ QTextLayoutStruct() : maximumWidth(QFIXED_MAX), fullLayout(false)
{}
QTextFrame *frame;
QFixed x_left;
@@ -477,9 +477,9 @@ public:
HitPoint hitTest(QTextTable *table, const QFixedPoint &point, int *position, QTextLayout **l, Qt::HitTestAccuracy accuracy) const;
HitPoint hitTest(QTextBlock bl, const QFixedPoint &point, int *position, QTextLayout **l, Qt::HitTestAccuracy accuracy) const;
- QLayoutStruct layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
- int layoutFrom, int layoutTo, QTextTableData *tableData, QFixed absoluteTableY,
- bool withPageBreaks);
+ QTextLayoutStruct layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
+ int layoutFrom, int layoutTo, QTextTableData *tableData, QFixed absoluteTableY,
+ bool withPageBreaks);
void setCellPosition(QTextTable *t, const QTextTableCell &cell, const QPointF &pos);
QRectF layoutTable(QTextTable *t, int layoutFrom, int layoutTo, QFixed parentY);
@@ -490,13 +490,13 @@ public:
QRectF layoutFrame(QTextFrame *f, int layoutFrom, int layoutTo, QFixed frameWidth, QFixed frameHeight, QFixed parentY = 0);
void layoutBlock(const QTextBlock &bl, int blockPosition, const QTextBlockFormat &blockFormat,
- QLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat);
- void layoutFlow(QTextFrame::Iterator it, QLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, QFixed width = 0);
- void pageBreakInsideTable(QTextTable *table, QLayoutStruct *layoutStruct);
+ QTextLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat);
+ void layoutFlow(QTextFrame::Iterator it, QTextLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, QFixed width = 0);
+ void pageBreakInsideTable(QTextTable *table, QTextLayoutStruct *layoutStruct);
- void floatMargins(const QFixed &y, const QLayoutStruct *layoutStruct, QFixed *left, QFixed *right) const;
- QFixed findY(QFixed yFrom, const QLayoutStruct *layoutStruct, QFixed requiredWidth) const;
+ void floatMargins(const QFixed &y, const QTextLayoutStruct *layoutStruct, QFixed *left, QFixed *right) const;
+ QFixed findY(QFixed yFrom, const QTextLayoutStruct *layoutStruct, QFixed requiredWidth) const;
QVector<QCheckPoint> checkPoints;
@@ -1369,9 +1369,7 @@ void QTextDocumentLayoutPrivate::drawListItem(const QPointF &offset, QPainter *p
QTextLine firstLine = layout->lineAt(0);
Q_ASSERT(firstLine.isValid());
QPointF pos = (offset + layout->position()).toPoint();
- Qt::LayoutDirection dir = docPrivate->defaultTextOption.textDirection();
- if (blockFormat.hasProperty(QTextFormat::LayoutDirection))
- dir = blockFormat.layoutDirection();
+ Qt::LayoutDirection dir = bl.textDirection();
{
QRectF textRect = firstLine.naturalTextRect();
pos += textRect.topLeft().toPoint();
@@ -1487,12 +1485,12 @@ static QFixed firstChildPos(const QTextFrame *f)
return flowPosition(f->begin());
}
-QLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
- int layoutFrom, int layoutTo, QTextTableData *td,
- QFixed absoluteTableY, bool withPageBreaks)
+QTextLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QTextTableCell &cell, QFixed width,
+ int layoutFrom, int layoutTo, QTextTableData *td,
+ QFixed absoluteTableY, bool withPageBreaks)
{
LDEBUG << "layoutCell";
- QLayoutStruct layoutStruct;
+ QTextLayoutStruct layoutStruct;
layoutStruct.frame = t;
layoutStruct.minimumWidth = 0;
layoutStruct.maximumWidth = QFIXED_MAX;
@@ -1641,9 +1639,9 @@ recalc_minmax_widths:
// to figure out the min and the max width lay out the cell at
// maximum width. otherwise the maxwidth calculation sometimes
// returns wrong values
- QLayoutStruct layoutStruct = layoutCell(table, cell, QFIXED_MAX, layoutFrom,
- layoutTo, td, absoluteTableY,
- /*withPageBreaks =*/false);
+ QTextLayoutStruct layoutStruct = layoutCell(table, cell, QFIXED_MAX, layoutFrom,
+ layoutTo, td, absoluteTableY,
+ /*withPageBreaks =*/false);
// distribute the minimum width over all columns the cell spans
QFixed widthToDistribute = layoutStruct.minimumWidth + widthPadding;
@@ -1868,10 +1866,10 @@ relayout:
++rowCellCount;
const QFixed width = td->cellWidth(c, cspan) - widthPadding;
- QLayoutStruct layoutStruct = layoutCell(table, cell, width,
- layoutFrom, layoutTo,
- td, absoluteTableY,
- /*withPageBreaks =*/true);
+ QTextLayoutStruct layoutStruct = layoutCell(table, cell, width,
+ layoutFrom, layoutTo,
+ td, absoluteTableY,
+ /*withPageBreaks =*/true);
const QFixed height = layoutStruct.y + bottomPadding + topPadding;
@@ -1976,7 +1974,7 @@ void QTextDocumentLayoutPrivate::positionFloat(QTextFrame *frame, QTextLine *cur
QTextFrameData *pd = data(parent);
Q_ASSERT(pd && pd->currentLayoutStruct);
- QLayoutStruct *layoutStruct = pd->currentLayoutStruct;
+ QTextLayoutStruct *layoutStruct = pd->currentLayoutStruct;
if (!pd->floats.contains(frame))
pd->floats.append(frame);
@@ -2116,7 +2114,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
// function.
fd->contentsWidth = newContentsWidth;
- QLayoutStruct layoutStruct;
+ QTextLayoutStruct layoutStruct;
layoutStruct.frame = f;
layoutStruct.x_left = fd->leftMargin + fd->border + fd->padding;
layoutStruct.x_right = layoutStruct.x_left + newContentsWidth;
@@ -2179,7 +2177,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
return layoutStruct.updateRect;
}
-void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QLayoutStruct *layoutStruct,
+void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QTextLayoutStruct *layoutStruct,
int layoutFrom, int layoutTo, QFixed width)
{
LDEBUG << "layoutFlow from=" << layoutFrom << "to=" << layoutTo;
@@ -2509,7 +2507,7 @@ void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QLayoutStru
}
void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosition, const QTextBlockFormat &blockFormat,
- QLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat)
+ QTextLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat)
{
Q_Q(QTextDocumentLayout);
@@ -2530,9 +2528,7 @@ void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosi
//QTextFrameData *fd = data(layoutStruct->frame);
- Qt::LayoutDirection dir = docPrivate->defaultTextOption.textDirection();
- if (blockFormat.hasProperty(QTextFormat::LayoutDirection))
- dir = blockFormat.layoutDirection();
+ Qt::LayoutDirection dir = bl.textDirection();
QFixed extraMargin;
if (docPrivate->defaultTextOption.flags() & QTextOption::AddSpaceForLineAndParagraphSeparators) {
@@ -2718,7 +2714,7 @@ void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosi
}
}
-void QTextDocumentLayoutPrivate::floatMargins(const QFixed &y, const QLayoutStruct *layoutStruct,
+void QTextDocumentLayoutPrivate::floatMargins(const QFixed &y, const QTextLayoutStruct *layoutStruct,
QFixed *left, QFixed *right) const
{
// qDebug() << "floatMargins y=" << y;
@@ -2740,7 +2736,7 @@ void QTextDocumentLayoutPrivate::floatMargins(const QFixed &y, const QLayoutStru
// qDebug() << "floatMargins: left="<<*left<<"right="<<*right<<"y="<<y;
}
-QFixed QTextDocumentLayoutPrivate::findY(QFixed yFrom, const QLayoutStruct *layoutStruct, QFixed requiredWidth) const
+QFixed QTextDocumentLayoutPrivate::findY(QFixed yFrom, const QTextLayoutStruct *layoutStruct, QFixed requiredWidth) const
{
QFixed right, left;
requiredWidth = qMin(requiredWidth, layoutStruct->x_right - layoutStruct->x_left);
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index d34553f..ac1fffd 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -885,7 +885,7 @@ void QTextEngine::shapeText(int item) const
QFixed letterSpacing = font.d->letterSpacing;
QFixed wordSpacing = font.d->wordSpacing;
- if (letterSpacingIsAbsolute)
+ if (letterSpacingIsAbsolute && letterSpacing.value())
letterSpacing *= font.d->dpi / qt_defaultDpiY();
if (letterSpacing != 0) {
@@ -1404,7 +1404,10 @@ void QTextEngine::itemize() const
#else
bool ignore = ignoreBidi;
#endif
- if (!ignore && option.textDirection() == Qt::LeftToRight) {
+
+ bool rtl = isRightToLeft();
+
+ if (!ignore && !rtl) {
ignore = true;
const QChar *start = layoutData->string.unicode();
const QChar * const end = start + length;
@@ -1420,7 +1423,7 @@ void QTextEngine::itemize() const
QVarLengthArray<QScriptAnalysis, 4096> scriptAnalysis(length);
QScriptAnalysis *analysis = scriptAnalysis.data();
- QBidiControl control(option.textDirection() == Qt::RightToLeft);
+ QBidiControl control(rtl);
if (ignore) {
memset(analysis, 0, length*sizeof(QScriptAnalysis));
@@ -1515,6 +1518,23 @@ void QTextEngine::itemize() const
resolveAdditionalFormats();
}
+bool QTextEngine::isRightToLeft() const
+{
+ switch (option.textDirection()) {
+ case Qt::LeftToRight:
+ return false;
+ case Qt::RightToLeft:
+ return true;
+ default:
+ break;
+ }
+ // this places the cursor in the right position depending on the keyboard layout
+ if (layoutData->string.isEmpty())
+ return QApplication::keyboardInputDirection() == Qt::RightToLeft;
+ return layoutData->string.isRightToLeft();
+}
+
+
int QTextEngine::findItem(int strPos) const
{
itemize();
@@ -2511,7 +2531,7 @@ QFixed QTextEngine::calculateTabWidth(int item, QFixed x) const
QList<QTextOption::Tab> tabArray = option.tabs();
if (!tabArray.isEmpty()) {
- if (option.textDirection() == Qt::RightToLeft) { // rebase the tabArray positions.
+ if (isRightToLeft()) { // rebase the tabArray positions.
QList<QTextOption::Tab> newTabs;
QList<QTextOption::Tab>::Iterator iter = tabArray.begin();
while(iter != tabArray.end()) {
@@ -2648,6 +2668,12 @@ QTextItemInt::QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFo
flags |= QTextItem::StrikeOut;
}
+QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, QFontEngine *fe)
+ : flags(0), justified(false), underlineStyle(QTextCharFormat::NoUnderline),
+ num_chars(0), chars(0), logClusters(0), f(font), fontEngine(fe), glyphs(g)
+{
+}
+
QTextItemInt QTextItemInt::midItem(QFontEngine *fontEngine, int firstGlyphIndex, int numGlyphs) const
{
QTextItemInt ti = *this;
diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h
index d92148f..908a0ec 100644
--- a/src/gui/text/qtextengine_p.h
+++ b/src/gui/text/qtextengine_p.h
@@ -311,6 +311,7 @@ public:
logClusters(0), f(0), fontEngine(0)
{}
QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format = QTextCharFormat());
+ QTextItemInt(const QGlyphLayout &g, QFont *font, QFontEngine *fe);
/// copy the structure items, adjusting the glyphs arrays to the right subarrays.
/// the width of the returned QTextItemInt is not adjusted, for speed reasons
@@ -457,6 +458,7 @@ public:
void validate() const;
void itemize() const;
+ bool isRightToLeft() const;
static void bidiReorder(int numRuns, const quint8 *levels, int *visualOrder);
const HB_CharAttributes *attributes() const;
diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp
index 140cf43..46db253 100644
--- a/src/gui/text/qtextformat.cpp
+++ b/src/gui/text/qtextformat.cpp
@@ -900,11 +900,14 @@ bool QTextFormat::boolProperty(int propertyId) const
*/
int QTextFormat::intProperty(int propertyId) const
{
+ // required, since the default layout direction has to be LayoutDirectionAuto, which is not integer 0
+ int def = (propertyId == QTextFormat::LayoutDirection) ? int(Qt::LayoutDirectionAuto) : 0;
+
if (!d)
- return 0;
+ return def;
const QVariant prop = d->property(propertyId);
if (prop.userType() != QVariant::Int)
- return 0;
+ return def;
return prop.toInt();
}
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 3f67408..ddf9411 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -69,7 +69,7 @@ static inline QFixed leadingSpaceWidth(QTextEngine *eng, const QScriptLine &line
if (!line.hasTrailingSpaces
|| (eng->option.flags() & QTextOption::IncludeTrailingSpaces)
|| !(eng->option.alignment() & Qt::AlignRight)
- || (eng->option.textDirection() != Qt::RightToLeft))
+ || !eng->isRightToLeft())
return QFixed();
int pos = line.length;
@@ -86,12 +86,12 @@ static QFixed alignLine(QTextEngine *eng, const QScriptLine &line)
// if width is QFIXED_MAX that means we used setNumColumns() and that implicitly makes this line left aligned.
if (!line.justified && line.width != QFIXED_MAX) {
int align = eng->option.alignment();
- if (align & Qt::AlignJustify && eng->option.textDirection() == Qt::RightToLeft)
+ if (align & Qt::AlignJustify && eng->isRightToLeft())
align = Qt::AlignRight;
if (align & Qt::AlignRight)
- x = line.width - (line.textWidth + leadingSpaceWidth(eng, line));
+ x = line.width - (line.textAdvance + leadingSpaceWidth(eng, line));
else if (align & Qt::AlignHCenter)
- x = (line.width - line.textWidth)/2;
+ x = (line.width - line.textAdvance)/2;
}
return x;
}
@@ -1337,7 +1337,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition
int itm = d->findItem(cursorPosition - 1);
QFixed base = sl.base();
QFixed descent = sl.descent;
- bool rightToLeft = (d->option.textDirection() == Qt::RightToLeft);
+ bool rightToLeft = d->isRightToLeft();
if (itm >= 0) {
const QScriptItem &si = d->layoutData->items.at(itm);
if (si.ascent > 0)
diff --git a/src/gui/text/qtextlist.cpp b/src/gui/text/qtextlist.cpp
index 2986ee7..a0ff520 100644
--- a/src/gui/text/qtextlist.cpp
+++ b/src/gui/text/qtextlist.cpp
@@ -262,7 +262,7 @@ QString QTextList::itemText(const QTextBlock &blockIt) const
default:
Q_ASSERT(false);
}
- if (blockFormat.layoutDirection() == Qt::RightToLeft)
+ if (blockIt.textDirection() == Qt::RightToLeft)
return result.prepend(QLatin1Char('.'));
return result + QLatin1Char('.');
}
diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp
index 088eb98..f386871 100644
--- a/src/gui/text/qtextobject.cpp
+++ b/src/gui/text/qtextobject.cpp
@@ -1140,6 +1140,49 @@ int QTextBlock::charFormatIndex() const
}
/*!
+ \since 4.7
+
+ Returns the resolved text direction.
+
+ If the block has no explicit direction set, it will resolve the
+ direction from the blocks content. Returns either Qt::LeftToRight
+ or Qt::RightToLeft.
+
+ \sa QTextBlock::layoutDirection(), QString::isRightToLeft(), Qt::LayoutDirection
+*/
+Qt::LayoutDirection QTextBlock::textDirection() const
+{
+ Qt::LayoutDirection dir = blockFormat().layoutDirection();
+ if (dir != Qt::LayoutDirectionAuto)
+ return dir;
+
+ const QString buffer = p->buffer();
+
+ const int pos = position();
+ QTextDocumentPrivate::FragmentIterator it = p->find(pos);
+ QTextDocumentPrivate::FragmentIterator end = p->find(pos + length() - 1); // -1 to omit the block separator char
+ for (; it != end; ++it) {
+ const QTextFragmentData * const frag = it.value();
+ const QChar *p = buffer.constData() + frag->stringPosition;
+ const QChar * const end = p + frag->size_array[0];
+ while (p < end) {
+ switch(QChar::direction(p->unicode()))
+ {
+ case QChar::DirL:
+ return Qt::LeftToRight;
+ case QChar::DirR:
+ case QChar::DirAL:
+ return Qt::RightToLeft;
+ default:
+ break;
+ }
+ ++p;
+ }
+ }
+ return Qt::LeftToRight;
+}
+
+/*!
Returns the block's contents as plain text.
\sa length() charFormat() blockFormat()
diff --git a/src/gui/text/qtextobject.h b/src/gui/text/qtextobject.h
index 67f67d8..a573a26 100644
--- a/src/gui/text/qtextobject.h
+++ b/src/gui/text/qtextobject.h
@@ -221,6 +221,8 @@ public:
QTextCharFormat charFormat() const;
int charFormatIndex() const;
+ Qt::LayoutDirection textDirection() const;
+
QString text() const;
const QTextDocument *document() const;
diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp
index c1e254c..3b02ebe 100644
--- a/src/gui/text/qtextoption.cpp
+++ b/src/gui/text/qtextoption.cpp
@@ -65,7 +65,7 @@ QTextOption::QTextOption()
tab(-1),
d(0)
{
- direction = QApplication::layoutDirection();
+ direction = Qt::LayoutDirectionAuto;
}
/*!
diff --git a/src/gui/text/qtextoption.h b/src/gui/text/qtextoption.h
index 1381ed1..fa8c6f2 100644
--- a/src/gui/text/qtextoption.h
+++ b/src/gui/text/qtextoption.h
@@ -134,8 +134,8 @@ private:
uint align : 8;
uint wordWrap : 4;
uint design : 1;
- uint direction : 1;
- uint unused : 19;
+ uint direction : 2;
+ uint unused : 18;
uint f;
qreal tab;
QTextOptionPrivate *d;
diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri
index 9ec3142..d5a9c74 100644
--- a/src/gui/text/text.pri
+++ b/src/gui/text/text.pri
@@ -138,6 +138,7 @@ contains(QT_CONFIG, freetype) {
../3rdparty/freetype/src/base/ftinit.c \
../3rdparty/freetype/src/base/ftmm.c \
../3rdparty/freetype/src/base/fttype1.c \
+ ../3rdparty/freetype/src/base/ftsynth.c \
../3rdparty/freetype/src/base/ftbitmap.c\
../3rdparty/freetype/src/bdf/bdf.c \
../3rdparty/freetype/src/cache/ftcache.c \
diff --git a/src/gui/widgets/qabstractscrollarea.cpp b/src/gui/widgets/qabstractscrollarea.cpp
index 8cffebd..30ce23b 100644
--- a/src/gui/widgets/qabstractscrollarea.cpp
+++ b/src/gui/widgets/qabstractscrollarea.cpp
@@ -295,8 +295,10 @@ void QAbstractScrollAreaPrivate::init()
q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
layoutChildren();
#ifndef Q_WS_MAC
+#ifndef QT_NO_GESTURES
viewport->grabGesture(Qt::PanGesture);
#endif
+#endif
}
#ifdef Q_WS_WIN
@@ -546,8 +548,10 @@ void QAbstractScrollArea::setViewport(QWidget *widget)
d->viewport->setFocusProxy(this);
d->viewport->installEventFilter(d->viewportFilter.data());
#ifndef Q_WS_MAC
+#ifndef QT_NO_GESTURES
d->viewport->grabGesture(Qt::PanGesture);
#endif
+#endif
d->layoutChildren();
if (isVisible())
d->viewport->show();
@@ -960,6 +964,7 @@ bool QAbstractScrollArea::event(QEvent *e)
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
return false;
+#ifndef QT_NO_GESTURES
case QEvent::Gesture:
{
QGestureEvent *ge = static_cast<QGestureEvent *>(e);
@@ -980,6 +985,7 @@ bool QAbstractScrollArea::event(QEvent *e)
}
return false;
}
+#endif // QT_NO_GESTURES
case QEvent::StyleChange:
case QEvent::LayoutDirectionChange:
case QEvent::ApplicationLayoutDirectionChange:
@@ -1036,9 +1042,11 @@ bool QAbstractScrollArea::viewportEvent(QEvent *e)
#endif
return QFrame::event(e);
case QEvent::LayoutRequest:
+#ifndef QT_NO_GESTURES
case QEvent::Gesture:
case QEvent::GestureOverride:
return event(e);
+#endif
default:
break;
}
diff --git a/src/gui/widgets/qlinecontrol_p.h b/src/gui/widgets/qlinecontrol_p.h
index 5da1831..7068f62 100644
--- a/src/gui/widgets/qlinecontrol_p.h
+++ b/src/gui/widgets/qlinecontrol_p.h
@@ -78,7 +78,7 @@ class Q_GUI_EXPORT QLineControl : public QObject
public:
QLineControl(const QString &txt = QString())
- : m_cursor(0), m_preeditCursor(0), m_cursorWidth(0), m_layoutDirection(Qt::LeftToRight),
+ : m_cursor(0), m_preeditCursor(0), m_cursorWidth(0), m_layoutDirection(Qt::LayoutDirectionAuto),
m_hideCursor(false), m_separator(0), m_readOnly(0),
m_dragEnabled(0), m_echoMode(0), m_textDirty(0), m_selDirty(0),
m_validInput(1), m_blinkStatus(0), m_blinkPeriod(0), m_blinkTimer(0), m_deleteAllTimer(0),
@@ -272,7 +272,14 @@ public:
QChar passwordCharacter() const { return m_passwordCharacter; }
void setPasswordCharacter(const QChar &character) { m_passwordCharacter = character; updateDisplayText(); }
- Qt::LayoutDirection layoutDirection() const { return m_layoutDirection; }
+ Qt::LayoutDirection layoutDirection() const {
+ if (m_layoutDirection == Qt::LayoutDirectionAuto) {
+ if (m_text.isEmpty())
+ return QApplication::keyboardInputDirection();
+ return m_text.isRightToLeft() ? Qt::RightToLeft : Qt::LeftToRight;
+ }
+ return m_layoutDirection;
+ }
void setLayoutDirection(Qt::LayoutDirection direction)
{
if (direction != m_layoutDirection) {
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index c1c4abf..1bffde1 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -1860,7 +1860,7 @@ void QLineEdit::paintEvent(QPaintEvent *)
p.setClipRect(r);
QFontMetrics fm = fontMetrics();
- Qt::Alignment va = QStyle::visualAlignment(layoutDirection(), QFlag(d->alignment));
+ Qt::Alignment va = QStyle::visualAlignment(d->control->layoutDirection(), QFlag(d->alignment));
switch (va & Qt::AlignVertical_Mask) {
case Qt::AlignBottom:
d->vscroll = r.y() + r.height() - fm.height() - d->verticalMargin;
@@ -2161,9 +2161,6 @@ void QLineEdit::changeEvent(QEvent *ev)
}
update();
break;
- case QEvent::LayoutDirectionChange:
- d->control->setLayoutDirection(layoutDirection());
- break;
default:
break;
}
diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp
index 2734fba..21c2635 100644
--- a/src/gui/widgets/qplaintextedit.cpp
+++ b/src/gui/widgets/qplaintextedit.cpp
@@ -1476,6 +1476,7 @@ bool QPlainTextEdit::event(QEvent *e)
d->sendControlEvent(e);
}
#endif
+#ifndef QT_NO_GESTURES
else if (e->type() == QEvent::Gesture) {
QGestureEvent *ge = static_cast<QGestureEvent *>(e);
QPanGesture *g = static_cast<QPanGesture *>(ge->gesture(Qt::PanGesture));
@@ -1499,6 +1500,7 @@ bool QPlainTextEdit::event(QEvent *e)
}
return true;
}
+#endif // QT_NO_GESTURES
return QAbstractScrollArea::event(e);
}
diff --git a/src/gui/widgets/qprogressbar.h b/src/gui/widgets/qprogressbar.h
index b461a21..58bc8b2 100644
--- a/src/gui/widgets/qprogressbar.h
+++ b/src/gui/widgets/qprogressbar.h
@@ -93,9 +93,11 @@ public:
Qt::Orientation orientation() const;
void setInvertedAppearance(bool invert);
- bool invertedAppearance();
+ bool invertedAppearance(); //### Qt5 make const
+ bool invertedAppearance() const { return const_cast<QProgressBar *>(this)->invertedAppearance(); }
void setTextDirection(QProgressBar::Direction textDirection);
- QProgressBar::Direction textDirection();
+ QProgressBar::Direction textDirection(); //### Qt5 make const
+ QProgressBar::Direction textDirection() const { return const_cast<QProgressBar *>(this)->textDirection(); }
void setFormat(const QString &format);
QString format() const;
diff --git a/src/gui/widgets/qstackedwidget.cpp b/src/gui/widgets/qstackedwidget.cpp
index 2509a21..de8d3e6 100644
--- a/src/gui/widgets/qstackedwidget.cpp
+++ b/src/gui/widgets/qstackedwidget.cpp
@@ -186,11 +186,11 @@ int QStackedWidget::insertWidget(int index, QWidget *widget)
}
/*!
- Removes the given \a widget from the QStackedWidget.
+ Removes \a widget from the QStackedWidget. i.e., \a widget is \e
+ not deleted but simply removed from the stacked layout, causing it
+ to be hidden.
- \bold{Note:} The ownership of \a widget remains the same.
- The widget is \e not deleted, but simply removed from the widget's
- stacked layout, causing it to be hidden.
+ \bold{Note:} Ownership of \a widget reverts to the application.
\sa addWidget(), insertWidget(), currentWidget()
*/
diff --git a/src/imports/gestures/plugin.cpp b/src/imports/gestures/plugin.cpp
index 11f2392..1fc23ca 100644
--- a/src/imports/gestures/plugin.cpp
+++ b/src/imports/gestures/plugin.cpp
@@ -53,7 +53,9 @@ public:
virtual void registerTypes(const char *uri)
{
Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.labs.gestures"));
+#ifndef QT_NO_GESTURES
qmlRegisterCustomType<QDeclarativeGestureArea>(uri,1,0, "GestureArea", new QDeclarativeGestureAreaParser);
+#endif
}
};
@@ -62,4 +64,3 @@ QT_END_NAMESPACE
#include "plugin.moc"
Q_EXPORT_PLUGIN2(qmlgesturesplugin, QT_PREPEND_NAMESPACE(GestureAreaQmlPlugin));
-
diff --git a/src/imports/gestures/qdeclarativegesturearea.cpp b/src/imports/gestures/qdeclarativegesturearea.cpp
index 1b0aeeb..22be2f1 100644
--- a/src/imports/gestures/qdeclarativegesturearea.cpp
+++ b/src/imports/gestures/qdeclarativegesturearea.cpp
@@ -55,6 +55,8 @@
#include <private/qobject_p.h>
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_NAMESPACE
class QDeclarativeGestureAreaPrivate : public QDeclarativeItemPrivate
@@ -267,3 +269,5 @@ bool QDeclarativeGestureAreaPrivate::gestureEvent(QGestureEvent *event)
}
QT_END_NAMESPACE
+
+#endif // QT_NO_GESTURES
diff --git a/src/imports/gestures/qdeclarativegesturearea_p.h b/src/imports/gestures/qdeclarativegesturearea_p.h
index 0195511..ff89166 100644
--- a/src/imports/gestures/qdeclarativegesturearea_p.h
+++ b/src/imports/gestures/qdeclarativegesturearea_p.h
@@ -50,6 +50,8 @@
#include <QtCore/qstring.h>
#include <QtGui/qgesture.h>
+#ifndef QT_NO_GESTURES
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -97,4 +99,6 @@ QML_DECLARE_TYPE(QDeclarativeGestureArea)
QT_END_HEADER
+#endif // QT_NO_GESTURES
+
#endif
diff --git a/src/imports/particles/qdeclarativeparticles.cpp b/src/imports/particles/qdeclarativeparticles.cpp
index ecc6604..630c068 100644
--- a/src/imports/particles/qdeclarativeparticles.cpp
+++ b/src/imports/particles/qdeclarativeparticles.cpp
@@ -241,11 +241,13 @@ void QDeclarativeParticleMotionGravity::setAcceleration(qreal accel)
void QDeclarativeParticleMotionGravity::advance(QDeclarativeParticle &p, int interval)
{
- qreal xdiff = p.x - _xAttr;
- qreal ydiff = p.y - _yAttr;
+ qreal xdiff = _xAttr - p.x;
+ qreal ydiff = _yAttr - p.y;
+ qreal absXdiff = qAbs(xdiff);
+ qreal absYdiff = qAbs(ydiff);
- qreal xcomp = xdiff / (xdiff + ydiff);
- qreal ycomp = ydiff / (xdiff + ydiff);
+ qreal xcomp = xdiff / (absXdiff + absYdiff);
+ qreal ycomp = ydiff / (absXdiff + absYdiff);
p.x_velocity += xcomp * _accel * interval;
p.y_velocity += ycomp * _accel * interval;
@@ -1284,11 +1286,7 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics
const int myX = x() + parentItem()->x();
const int myY = y() + parentItem()->y();
-#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
QVarLengthArray<QPainter::PixmapFragment, 256> pixmapData;
-#else
- QVarLengthArray<QDrawPixmaps::Data, 256> pixmapData;
-#endif
pixmapData.resize(d->particles.count());
const QRectF sourceRect = d->image.rect();
@@ -1296,32 +1294,20 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics
qreal halfPHeight = sourceRect.height()/2.;
for (int i = 0; i < d->particles.count(); ++i) {
const QDeclarativeParticle &particle = d->particles.at(i);
-#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
pixmapData[i].x = particle.x - myX + halfPWidth;
pixmapData[i].y = particle.y - myY + halfPHeight;
-#else
- pixmapData[i].point = QPointF(particle.x - myX + halfPWidth, particle.y - myY + halfPHeight);
-#endif
pixmapData[i].opacity = particle.opacity;
//these never change
pixmapData[i].rotation = 0;
pixmapData[i].scaleX = 1;
pixmapData[i].scaleY = 1;
-#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
pixmapData[i].sourceLeft = sourceRect.left();
pixmapData[i].sourceTop = sourceRect.top();
pixmapData[i].width = sourceRect.width();
pixmapData[i].height = sourceRect.height();
-#else
- pixmapData[i].source = sourceRect;
-#endif
}
-#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
p->drawPixmapFragments(pixmapData.data(), d->particles.count(), d->image);
-#else
- qDrawPixmaps(p, pixmapData.data(), d->particles.count(), d->image);
-#endif
}
void QDeclarativeParticles::componentComplete()
diff --git a/src/imports/qimportbase.pri b/src/imports/qimportbase.pri
index 91f6552..0f70030 100644
--- a/src/imports/qimportbase.pri
+++ b/src/imports/qimportbase.pri
@@ -1,3 +1,4 @@
+symbian:include(../plugins/qpluginbase.pri)
TEMPLATE = lib
CONFIG += qt plugin
@@ -17,6 +18,8 @@ copy2build.output = $$QT_BUILD_TREE/imports/$$TARGETPATH/qmldir
copy2build.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
copy2build.name = COPY ${QMAKE_FILE_IN}
copy2build.CONFIG += no_link
+# `clean' should leave the build in a runnable state, which means it shouldn't delete qmldir
+copy2build.CONFIG += no_clean
QMAKE_EXTRA_COMPILERS += copy2build
TARGET = $$qtLibraryTarget($$TARGET)
diff --git a/src/imports/webkit/qdeclarativewebview.cpp b/src/imports/webkit/qdeclarativewebview.cpp
index 050e2b7..383f1ce 100644
--- a/src/imports/webkit/qdeclarativewebview.cpp
+++ b/src/imports/webkit/qdeclarativewebview.cpp
@@ -711,7 +711,7 @@ bool QDeclarativeWebView::sceneEvent(QEvent *event)
return QDeclarativeItem::sceneEvent(event);
}
-
+#ifndef QT_NO_ACTION
/*!
\qmlproperty action WebView::back
This property holds the action for causing the previous URL in the history to be displayed.
@@ -747,6 +747,7 @@ QAction *QDeclarativeWebView::stopAction() const
{
return page()->action(QWebPage::Stop);
}
+#endif // QT_NO_ACTION
/*!
\qmlproperty real WebView::title
@@ -1162,9 +1163,9 @@ QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QStri
}
/*!
- \qmlsignal WebView::alert(message)
+ \qmlsignal WebView::onAlert(message)
- This signal is emitted when the web engine sends a JavaScript alert. The \a message is the text
+ This handler is called when the web engine sends a JavaScript alert. The \a message is the text
to be displayed in the alert to the user.
*/
diff --git a/src/imports/webkit/qdeclarativewebview_p.h b/src/imports/webkit/qdeclarativewebview_p.h
index 87bd938..042237e 100644
--- a/src/imports/webkit/qdeclarativewebview_p.h
+++ b/src/imports/webkit/qdeclarativewebview_p.h
@@ -108,10 +108,12 @@ class QDeclarativeWebView : public QDeclarativeItem
Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged)
Q_PROPERTY(Status status READ status NOTIFY statusChanged)
+#ifndef QT_NO_ACTION
Q_PROPERTY(QAction* reload READ reloadAction CONSTANT)
Q_PROPERTY(QAction* back READ backAction CONSTANT)
Q_PROPERTY(QAction* forward READ forwardAction CONSTANT)
Q_PROPERTY(QAction* stop READ stopAction CONSTANT)
+#endif
Q_PROPERTY(QDeclarativeWebSettings* settings READ settingsObject CONSTANT)
@@ -154,10 +156,12 @@ public:
qreal progress() const;
QString statusText() const;
+#ifndef QT_NO_ACTION
QAction *reloadAction() const;
QAction *backAction() const;
QAction *forwardAction() const;
QAction *stopAction() const;
+#endif
QWebPage *page() const;
void setPage(QWebPage *page);
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 42c64fb..837cf66 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -464,6 +464,15 @@ QNetworkAccessManager::~QNetworkAccessManager()
#ifndef QT_NO_NETWORKPROXY
delete d_func()->proxyFactory;
#endif
+
+ // Delete the QNetworkReply children first.
+ // Else a QAbstractNetworkCache might get deleted in ~QObject
+ // before a QNetworkReply that accesses the QAbstractNetworkCache
+ // object in its destructor.
+ qDeleteAll(findChildren<QNetworkReply *>());
+ // The other children will be deleted in this ~QObject
+ // FIXME instead of this "hack" make the QNetworkReplyImpl
+ // properly watch the cache deletion, e.g. via a QWeakPointer.
}
#ifndef QT_NO_NETWORKPROXY
diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp
index 865d338..d1bdd57 100644
--- a/src/network/access/qnetworkcookie.cpp
+++ b/src/network/access/qnetworkcookie.cpp
@@ -991,6 +991,8 @@ QList<QNetworkCookie> QNetworkCookiePrivate::parseSetCookieHeaderLine(const QByt
}
QString normalizedDomain = QUrl::fromAce(QUrl::toAce(QString::fromUtf8(rawDomain)));
+ if (normalizedDomain.isEmpty() && !rawDomain.isEmpty())
+ return result;
cookie.setDomain(maybeLeadingDot + normalizedDomain);
} else if (field.first == "max-age") {
bool ok = false;
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp
index 471927a..5d4274f 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
+++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
@@ -483,8 +483,10 @@ void QNetworkConfigurationManagerPrivate::pollEngines()
QMutexLocker locker(&mutex);
for (int i = 0; i < sessionEngines.count(); ++i) {
- if ((forcedPolling && sessionEngines.at(i)->requiresPolling()) ||
- sessionEngines.at(i)->configurationsInUse()) {
+ if (!sessionEngines.at(i)->requiresPolling())
+ continue;
+
+ if (forcedPolling || sessionEngines.at(i)->configurationsInUse()) {
pollingEngines.insert(i);
QMetaObject::invokeMethod(sessionEngines.at(i), "requestUpdate");
}
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index ada9381..bc5a025 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -1138,6 +1138,20 @@ void QNetworkProxyQuery::setUrl(const QUrl &url)
multiple connections, such as QNetworkAccessManager. When set on
such object, the factory will be queried for sockets created by
that framework only.
+
+ \section1 System Proxies
+
+ You can configure a factory to use the system proxy's settings.
+ Call the setUseSystemConfiguration() function with true to enable
+ this behavior, or false to disable it.
+
+ Similarly, you can use a factory to make queries directly to the
+ system proxy by calling its systemProxyForQuery() function.
+
+ \warning Depending on the configuration of the user's system, the
+ use of system proxy features on certain platforms may be subject
+ to limitations. The systemProxyForQuery() documentation contains a
+ list of these limitations for those platforms that are affected.
*/
/*!
@@ -1159,17 +1173,20 @@ QNetworkProxyFactory::~QNetworkProxyFactory()
/*!
+ \since 4.6
+
Enables the use of the platform-specific proxy settings, and only those.
See systemProxyForQuery() for more information.
Internally, this method (when called with \a enable set to true)
sets an application-wide proxy factory. For this reason, this method
- is mutually exclusive with setApplicationProxyFactory: calling
- setApplicationProxyFactory overrides the use of the system-wide proxy,
- and calling setUseSystemConfiguration overrides any
+ is mutually exclusive with setApplicationProxyFactory(): calling
+ setApplicationProxyFactory() overrides the use of the system-wide proxy,
+ and calling setUseSystemConfiguration() overrides any
application proxy or proxy factory that was previously set.
- \since 4.6
+ \note See the systemProxyForQuery() documentation for a list of
+ limitations related to the use of system proxies.
*/
void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)
{
@@ -1264,8 +1281,13 @@ void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *fact
function. Future versions of Qt may lift some of the limitations
listed here.
- On MacOS X, this function will ignore the Proxy Auto Configuration
+ \list
+ \o On MacOS X, this function will ignore the Proxy Auto Configuration
settings, since it cannot execute the associated ECMAScript code.
+
+ \o On Windows platforms, this function may take several seconds to
+ execute depending on the configuration of the user's system.
+ \endlist
*/
/*!
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index fd647e2..31c5ed1 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -259,13 +259,28 @@ QByteArray QSslCertificate::version() const
/*!
Returns the certificate's serial number string in decimal format.
+ In case the serial number cannot be converted to decimal format
+ (i.e. if it is bigger than 4294967295, which means it does not fit into 4 bytes),
+ its hexadecimal version is returned.
*/
QByteArray QSslCertificate::serialNumber() const
{
- if (d->serialNumberString.isEmpty() && d->x509)
- d->serialNumberString =
- QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->serialNumber)));
-
+ if (d->serialNumberString.isEmpty() && d->x509) {
+ ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
+ // if we cannot convert to a long, just output the hexadecimal number
+ if (serialNumber->length > 4) {
+ QByteArray hexString;
+ hexString.reserve(serialNumber->length * 3);
+ for (int a = 0; a < serialNumber->length; ++a) {
+ hexString += QByteArray::number(serialNumber->data[a], 16).rightJustified(2, '0');
+ hexString += ':';
+ }
+ hexString.chop(1);
+ d->serialNumberString = hexString;
+ } else {
+ d->serialNumberString = QByteArray::number(qlonglong(q_ASN1_INTEGER_get(serialNumber)));
+ }
+ }
return d->serialNumberString;
}
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 5758b25..ee49a3d 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1333,8 +1333,16 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
QFontEngineGlyphCache::Type glyphType = textItem->fontEngine->glyphFormat >= 0
? QFontEngineGlyphCache::Type(textItem->fontEngine->glyphFormat)
: d->glyphCacheType;
+ if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
+ if (d->device->alphaRequested() || state()->matrix.type() > QTransform::TxTranslate
+ || (state()->composition_mode != QPainter::CompositionMode_Source
+ && state()->composition_mode != QPainter::CompositionMode_SourceOver))
+ {
+ glyphType = QFontEngineGlyphCache::Raster_A8;
+ }
+ }
- d->drawCachedGlyphs(glyphType, textItem, true);
+ d->drawCachedGlyphs(glyphType, textItem);
}
bool QGL2PaintEngineEx::drawTexture(const QRectF &dest, GLuint textureId, const QSize &size, const QRectF &src)
@@ -1408,7 +1416,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
staticTextItem.numGlyphs = glyphs.size();
staticTextItem.glyphPositions = positions.data();
- d->drawCachedGlyphs(glyphType, &staticTextItem, false);
+ d->drawCachedGlyphs(glyphType, &staticTextItem);
}
return;
}
@@ -1439,21 +1447,16 @@ namespace {
// #define QT_OPENGL_DRAWCACHEDGLYPHS_INDEX_ARRAY_VBO
void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType,
- QStaticTextItem *staticTextItem,
- bool includeMatrixInCache)
+ QStaticTextItem *staticTextItem)
{
Q_Q(QGL2PaintEngineEx);
QOpenGL2PaintEngineState *s = q->state();
QGLTextureGlyphCache *cache =
- (QGLTextureGlyphCache *) staticTextItem->fontEngine->glyphCache(ctx, glyphType,
- includeMatrixInCache
- ? s->matrix
- : QTransform());
+ (QGLTextureGlyphCache *) staticTextItem->fontEngine->glyphCache(ctx, glyphType, QTransform());
if (!cache || cache->cacheType() != glyphType) {
- cache = new QGLTextureGlyphCache(ctx, glyphType,
- includeMatrixInCache ? s->matrix : QTransform());
+ cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform());
staticTextItem->fontEngine->setGlyphCache(ctx, cache);
}
@@ -1561,13 +1564,6 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
QBrush pensBrush = q->state()->pen.brush();
setBrush(pensBrush);
- // When painting a QStaticTextItem, the glyph positions are already in device coordinates,
- // therefore we temporarily set an identity matrix on the painter for the draw call to
- // avoid transforming the positions twice.
- QTransform old = s->matrix;
- if (includeMatrixInCache)
- s->matrix = QTransform();
-
if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
// Subpixel antialiasing without gamma correction
@@ -1664,9 +1660,6 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
#else
glDrawElements(GL_TRIANGLE_STRIP, 6 * staticTextItem->numGlyphs, GL_UNSIGNED_SHORT, elementIndices.data());
#endif
-
- if (includeMatrixInCache)
- s->matrix = old;
}
void QGL2PaintEngineEx::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap,
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
index 0a046dc..59b90d8 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
@@ -202,8 +202,7 @@ public:
void drawTexture(const QGLRect& dest, const QGLRect& src, const QSize &textureSize, bool opaque, bool pattern = false);
void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap,
QPainter::PixmapFragmentHints hints);
- void drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, QStaticTextItem *staticTextItem,
- bool includeMatrixInCache);
+ void drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, QStaticTextItem *staticTextItem);
// Calls glVertexAttributePointer if the pointer has changed
inline void setVertexAttributePointer(unsigned int arrayIndex, const GLfloat *pointer);
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
index 410cf21..5371c5e 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
@@ -276,6 +276,11 @@ void QGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph)
}
}
+int QGLTextureGlyphCache::glyphMargin() const
+{
+ return 1;
+}
+
int QGLTextureGlyphCache::glyphPadding() const
{
return 1;
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
index 6bcd655..84e9021 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
@@ -72,6 +72,7 @@ public:
virtual void createTextureData(int width, int height);
virtual void resizeTextureData(int width, int height);
virtual void fillTexture(const Coord &c, glyph_t glyph);
+ virtual int glyphMargin() const;
virtual int glyphPadding() const;
inline GLuint texture() const { return m_texture; }
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 922a96c..b4c85ac 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -91,6 +91,7 @@
#include "qcolormap.h"
#include "qfile.h"
#include "qlibrary.h"
+#include <qmutex.h>
QT_BEGIN_NAMESPACE
@@ -1255,6 +1256,8 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co
QGLFormat::OpenGL_Version_2_1 |
QGLFormat::OpenGL_Version_3_0;
switch (versionString[2].toAscii()) {
+ case '3':
+ versionFlags |= QGLFormat::OpenGL_Version_3_3;
case '2':
versionFlags |= QGLFormat::OpenGL_Version_3_2;
case '1':
@@ -1263,9 +1266,23 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co
break;
default:
versionFlags |= QGLFormat::OpenGL_Version_3_1 |
- QGLFormat::OpenGL_Version_3_2;
+ QGLFormat::OpenGL_Version_3_2 |
+ QGLFormat::OpenGL_Version_3_3;
break;
}
+ } else if (versionString.startsWith(QLatin1String("4."))) {
+ versionFlags |= QGLFormat::OpenGL_Version_1_1 |
+ QGLFormat::OpenGL_Version_1_2 |
+ QGLFormat::OpenGL_Version_1_3 |
+ QGLFormat::OpenGL_Version_1_4 |
+ QGLFormat::OpenGL_Version_1_5 |
+ QGLFormat::OpenGL_Version_2_0 |
+ QGLFormat::OpenGL_Version_2_1 |
+ QGLFormat::OpenGL_Version_3_0 |
+ QGLFormat::OpenGL_Version_3_1 |
+ QGLFormat::OpenGL_Version_3_2 |
+ QGLFormat::OpenGL_Version_3_3 |
+ QGLFormat::OpenGL_Version_4_0;
} else {
versionFlags |= QGLFormat::OpenGL_Version_1_1 |
QGLFormat::OpenGL_Version_1_2 |
@@ -1276,7 +1293,9 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co
QGLFormat::OpenGL_Version_2_1 |
QGLFormat::OpenGL_Version_3_0 |
QGLFormat::OpenGL_Version_3_1 |
- QGLFormat::OpenGL_Version_3_2;
+ QGLFormat::OpenGL_Version_3_2 |
+ QGLFormat::OpenGL_Version_3_3 |
+ QGLFormat::OpenGL_Version_4_0;
}
}
return versionFlags;
@@ -1515,10 +1534,33 @@ bool operator!=(const QGLFormat& a, const QGLFormat& b)
return !(a == b);
}
+struct QGLContextGroupList {
+ void append(QGLContextGroup *group) {
+ QMutexLocker locker(&m_mutex);
+ m_list.append(group);
+ }
+
+ void remove(QGLContextGroup *group) {
+ QMutexLocker locker(&m_mutex);
+ m_list.removeOne(group);
+ }
+
+ QList<QGLContextGroup *> m_list;
+ QMutex m_mutex;
+};
+
+Q_GLOBAL_STATIC(QGLContextGroupList, qt_context_groups)
+
/*****************************************************************************
QGLContext implementation
*****************************************************************************/
+QGLContextGroup::QGLContextGroup(const QGLContext *context)
+ : m_context(context), m_guards(0), m_refs(1)
+{
+ qt_context_groups()->append(this);
+}
+
QGLContextGroup::~QGLContextGroup()
{
// Clear any remaining QGLSharedResourceGuard objects on the group.
@@ -1528,6 +1570,7 @@ QGLContextGroup::~QGLContextGroup()
guard->m_id = 0;
guard = guard->m_next;
}
+ qt_context_groups()->remove(this);
}
void QGLContextGroup::addGuard(QGLSharedResourceGuard *guard)
@@ -1736,7 +1779,7 @@ void QGLTextureCache::insert(QGLContext* ctx, qint64 key, QGLTexture* texture, i
QWriteLocker locker(&m_lock);
if (m_cache.totalCost() + cost > m_cache.maxCost()) {
// the cache is full - make an attempt to remove something
- const QList<qint64> keys = m_cache.keys();
+ const QList<QGLTextureCacheKey> keys = m_cache.keys();
int i = 0;
while (i < m_cache.count()
&& (m_cache.totalCost() + cost > m_cache.maxCost())) {
@@ -1746,13 +1789,26 @@ void QGLTextureCache::insert(QGLContext* ctx, qint64 key, QGLTexture* texture, i
++i;
}
}
- m_cache.insert(key, texture, cost);
+ const QGLTextureCacheKey cacheKey = {key, QGLContextPrivate::contextGroup(ctx)};
+ m_cache.insert(cacheKey, texture, cost);
+}
+
+void QGLTextureCache::remove(qint64 key)
+{
+ QWriteLocker locker(&m_lock);
+ QMutexLocker groupLocker(&qt_context_groups()->m_mutex);
+ QList<QGLContextGroup *>::const_iterator it = qt_context_groups()->m_list.constBegin();
+ while (it != qt_context_groups()->m_list.constEnd()) {
+ const QGLTextureCacheKey cacheKey = {key, *it};
+ m_cache.remove(cacheKey);
+ ++it;
+ }
}
bool QGLTextureCache::remove(QGLContext* ctx, GLuint textureId)
{
QWriteLocker locker(&m_lock);
- QList<qint64> keys = m_cache.keys();
+ QList<QGLTextureCacheKey> keys = m_cache.keys();
for (int i = 0; i < keys.size(); ++i) {
QGLTexture *tex = m_cache.object(keys.at(i));
if (tex->id == textureId && tex->context == ctx) {
@@ -1767,9 +1823,9 @@ bool QGLTextureCache::remove(QGLContext* ctx, GLuint textureId)
void QGLTextureCache::removeContextTextures(QGLContext* ctx)
{
QWriteLocker locker(&m_lock);
- QList<qint64> keys = m_cache.keys();
+ QList<QGLTextureCacheKey> keys = m_cache.keys();
for (int i = 0; i < keys.size(); ++i) {
- const qint64 &key = keys.at(i);
+ const QGLTextureCacheKey &key = keys.at(i);
if (m_cache.object(key)->context == ctx)
m_cache.remove(key);
}
@@ -1782,7 +1838,6 @@ void QGLTextureCache::removeContextTextures(QGLContext* ctx)
void QGLTextureCache::cleanupTexturesForCacheKey(qint64 cacheKey)
{
qt_gl_texture_cache()->remove(cacheKey);
- Q_ASSERT(qt_gl_texture_cache()->getTexture(cacheKey) == 0);
}
@@ -2425,7 +2480,7 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G
QGLTexture *QGLContextPrivate::textureCacheLookup(const qint64 key, GLenum target)
{
Q_Q(QGLContext);
- QGLTexture *texture = QGLTextureCache::instance()->getTexture(key);
+ QGLTexture *texture = QGLTextureCache::instance()->getTexture(q, key);
if (texture && texture->target == target
&& (texture->context == q || QGLContext::areSharing(q, texture->context)))
{
@@ -3619,8 +3674,10 @@ QGLWidget::~QGLWidget()
bool doRelease = (glcx && glcx->windowCreated());
#endif
delete d->glcx;
+ d->glcx = 0;
#if defined(Q_WGL)
delete d->olcx;
+ d->olcx = 0;
#endif
#if defined(GLX_MESA_release_buffers) && defined(QGL_USE_MESA_EXT)
if (doRelease)
diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h
index f297009..f0b36f7 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -266,7 +266,9 @@ public:
OpenGL_ES_Version_2_0 = 0x00000800,
OpenGL_Version_3_0 = 0x00001000,
OpenGL_Version_3_1 = 0x00002000,
- OpenGL_Version_3_2 = 0x00004000
+ OpenGL_Version_3_2 = 0x00004000,
+ OpenGL_Version_3_3 = 0x00008000,
+ OpenGL_Version_4_0 = 0x00010000
};
Q_DECLARE_FLAGS(OpenGLVersionFlags, OpenGLVersionFlag)
diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp
index 44e8ae9..0a19531 100644
--- a/src/opengl/qgl_egl.cpp
+++ b/src/opengl/qgl_egl.cpp
@@ -190,7 +190,7 @@ void QGLContext::makeCurrent()
if (!d->workaroundsCached) {
d->workaroundsCached = true;
const char *renderer = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
- if (strstr(renderer, "SGX") || strstr(renderer, "MBX")) {
+ if (renderer && (strstr(renderer, "SGX") || strstr(renderer, "MBX"))) {
// PowerVR MBX/SGX chips needs to clear all buffers when starting to render
// a new frame, otherwise there will be a performance penalty to pay for
// each frame.
@@ -200,7 +200,8 @@ void QGLContext::makeCurrent()
// bug which prevents glCopyTexSubImage2D() to work with a POT
// or GL_ALPHA texture bound to an FBO. The only way to
// identify that driver is to check the EGL version number for it.
- if (strstr(eglQueryString(d->eglContext->display(), EGL_VERSION), "1.3"))
+ const char *egl_version = eglQueryString(d->eglContext->display(), EGL_VERSION);
+ if (egl_version && strstr(egl_version, "1.3"))
d->workaround_brokenFBOReadBack = true;
}
}
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index d92f963..1727a41 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -177,6 +177,10 @@ public:
void initContext(QGLContext *context, const QGLWidget* shareWidget);
bool renderCxPm(QPixmap *pixmap);
void cleanupColormaps();
+ void aboutToDestroy() {
+ if (glcx)
+ glcx->reset();
+ }
QGLContext *glcx;
QGLWidgetGLPaintDevice glDevice;
@@ -230,7 +234,7 @@ public:
static void addShare(const QGLContext *context, const QGLContext *share);
static void removeShare(const QGLContext *context);
private:
- QGLContextGroup(const QGLContext *context) : m_context(context), m_guards(0), m_refs(1) { }
+ QGLContextGroup(const QGLContext *context);
QGLExtensionFuncs m_extensionFuncs;
const QGLContext *m_context; // context group's representative
@@ -522,17 +526,33 @@ public:
QSize bindCompressedTexturePVR(const char *buf, int len);
};
+struct QGLTextureCacheKey {
+ qint64 key;
+ QGLContextGroup *group;
+};
+
+inline bool operator==(const QGLTextureCacheKey &a, const QGLTextureCacheKey &b)
+{
+ return a.key == b.key && a.group == b.group;
+}
+
+inline uint qHash(const QGLTextureCacheKey &key)
+{
+ return qHash(key.key) ^ qHash(key.group);
+}
+
+
class Q_AUTOTEST_EXPORT QGLTextureCache {
public:
QGLTextureCache();
~QGLTextureCache();
void insert(QGLContext *ctx, qint64 key, QGLTexture *texture, int cost);
- inline void remove(quint64 key);
+ void remove(qint64 key);
inline int size();
inline void setMaxCost(int newMax);
inline int maxCost();
- inline QGLTexture* getTexture(quint64 key);
+ inline QGLTexture* getTexture(QGLContext *ctx, qint64 key);
bool remove(QGLContext *ctx, GLuint textureId);
void removeContextTextures(QGLContext *ctx);
@@ -542,7 +562,7 @@ public:
static void cleanupBeforePixmapDestruction(QPixmapData* pixmap);
private:
- QCache<qint64, QGLTexture> m_cache;
+ QCache<QGLTextureCacheKey, QGLTexture> m_cache;
QReadWriteLock m_lock;
};
@@ -563,19 +583,13 @@ int QGLTextureCache::maxCost()
return m_cache.maxCost();
}
-QGLTexture* QGLTextureCache::getTexture(quint64 key)
+QGLTexture* QGLTextureCache::getTexture(QGLContext *ctx, qint64 key)
{
QReadLocker locker(&m_lock);
- return m_cache.object(key);
-}
-
-void QGLTextureCache::remove(quint64 key)
-{
- QWriteLocker locker(&m_lock);
- m_cache.remove(key);
+ const QGLTextureCacheKey cacheKey = {key, QGLContextPrivate::contextGroup(ctx)};
+ return m_cache.object(cacheKey);
}
-
extern Q_OPENGL_EXPORT QPaintEngine* qt_qgl_paint_engine();
bool qt_gl_preferGL2Engine();
diff --git a/src/opengl/qgl_x11.cpp b/src/opengl/qgl_x11.cpp
index d203646..bfb232d 100644
--- a/src/opengl/qgl_x11.cpp
+++ b/src/opengl/qgl_x11.cpp
@@ -115,6 +115,20 @@ extern const QX11Info *qt_x11Info(const QPaintDevice *pd);
#define GLX_FRONT_LEFT_EXT 0x20DE
#endif
+#ifndef GLX_ARB_create_context
+#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define GLX_CONTEXT_FLAGS_ARB 0x2094
+#endif
+
+#ifndef GLX_ARB_create_context_profile
+#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
+#endif
+
/*
The qt_gl_choose_cmap function is internal and used by QGLWidget::setContext()
and GLX (not Windows). If the application can't find any sharable
@@ -401,6 +415,148 @@ bool QGLFormat::hasOpenGLOverlays()
return trans_colors.size() > 0;
}
+static bool buildSpec(int* spec, const QGLFormat& f, QPaintDevice* paintDevice,
+ int bufDepth, bool onlyFBConfig = false)
+{
+ int i = 0;
+ spec[i++] = GLX_LEVEL;
+ spec[i++] = f.plane();
+ const QX11Info *xinfo = qt_x11Info(paintDevice);
+ bool useFBConfig = onlyFBConfig;
+
+#if defined(GLX_VERSION_1_3) && !defined(QT_NO_XRENDER) && !defined(Q_OS_HPUX)
+ /*
+ HPUX defines GLX_VERSION_1_3 but does not implement the corresponding functions.
+ Specifically glXChooseFBConfig and glXGetVisualFromFBConfig are not implemented.
+ */
+ QWidget* widget = 0;
+ if (paintDevice->devType() == QInternal::Widget)
+ widget = static_cast<QWidget*>(paintDevice);
+
+ // Only use glXChooseFBConfig for widgets if we're trying to get an ARGB visual
+ if (widget && widget->testAttribute(Qt::WA_TranslucentBackground) && X11->use_xrender)
+ useFBConfig = true;
+#endif
+
+#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_info)
+ static bool useTranspExt = false;
+ static bool useTranspExtChecked = false;
+ if (f.plane() && !useTranspExtChecked && paintDevice) {
+ QGLExtensionMatcher extensions(glXQueryExtensionsString(xinfo->display(), xinfo->screen()));
+ useTranspExt = extensions.match("GLX_EXT_visual_info");
+ //# (A bit simplistic; that could theoretically be a substring)
+ if (useTranspExt) {
+ QByteArray cstr(glXGetClientString(xinfo->display(), GLX_VENDOR));
+ useTranspExt = !cstr.contains("Xi Graphics"); // bug workaround
+ if (useTranspExt) {
+ // bug workaround - some systems (eg. FireGL) refuses to return an overlay
+ // visual if the GLX_TRANSPARENT_TYPE_EXT attribute is specified, even if
+ // the implementation supports transparent overlays
+ int tmpSpec[] = { GLX_LEVEL, f.plane(), GLX_TRANSPARENT_TYPE_EXT,
+ f.rgba() ? GLX_TRANSPARENT_RGB_EXT : GLX_TRANSPARENT_INDEX_EXT,
+ XNone };
+ XVisualInfo * vinf = glXChooseVisual(xinfo->display(), xinfo->screen(), tmpSpec);
+ if (!vinf) {
+ useTranspExt = false;
+ }
+ }
+ }
+
+ useTranspExtChecked = true;
+ }
+ if (f.plane() && useTranspExt && !useFBConfig) {
+ // Required to avoid non-transparent overlay visual(!) on some systems
+ spec[i++] = GLX_TRANSPARENT_TYPE_EXT;
+ spec[i++] = f.rgba() ? GLX_TRANSPARENT_RGB_EXT : GLX_TRANSPARENT_INDEX_EXT;
+ }
+#endif
+
+#if defined(GLX_VERSION_1_3) && !defined(Q_OS_HPUX)
+ // GLX_RENDER_TYPE is only in glx >=1.3
+ if (useFBConfig) {
+ spec[i++] = GLX_RENDER_TYPE;
+ spec[i++] = f.rgba() ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT;
+ }
+#endif
+
+ if (f.doubleBuffer())
+ spec[i++] = GLX_DOUBLEBUFFER;
+ if (useFBConfig)
+ spec[i++] = True;
+ if (f.depth()) {
+ spec[i++] = GLX_DEPTH_SIZE;
+ spec[i++] = f.depthBufferSize() == -1 ? 1 : f.depthBufferSize();
+ }
+ if (f.stereo()) {
+ spec[i++] = GLX_STEREO;
+ if (useFBConfig)
+ spec[i++] = True;
+ }
+ if (f.stencil()) {
+ spec[i++] = GLX_STENCIL_SIZE;
+ spec[i++] = f.stencilBufferSize() == -1 ? 1 : f.stencilBufferSize();
+ }
+ if (f.rgba()) {
+ if (!useFBConfig)
+ spec[i++] = GLX_RGBA;
+ spec[i++] = GLX_RED_SIZE;
+ spec[i++] = f.redBufferSize() == -1 ? 1 : f.redBufferSize();
+ spec[i++] = GLX_GREEN_SIZE;
+ spec[i++] = f.greenBufferSize() == -1 ? 1 : f.greenBufferSize();
+ spec[i++] = GLX_BLUE_SIZE;
+ spec[i++] = f.blueBufferSize() == -1 ? 1 : f.blueBufferSize();
+ if (f.alpha()) {
+ spec[i++] = GLX_ALPHA_SIZE;
+ spec[i++] = f.alphaBufferSize() == -1 ? 1 : f.alphaBufferSize();
+ }
+ if (f.accum()) {
+ spec[i++] = GLX_ACCUM_RED_SIZE;
+ spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
+ spec[i++] = GLX_ACCUM_GREEN_SIZE;
+ spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
+ spec[i++] = GLX_ACCUM_BLUE_SIZE;
+ spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
+ if (f.alpha()) {
+ spec[i++] = GLX_ACCUM_ALPHA_SIZE;
+ spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
+ }
+ }
+ } else {
+ spec[i++] = GLX_BUFFER_SIZE;
+ spec[i++] = bufDepth;
+ }
+
+ if (f.sampleBuffers()) {
+ spec[i++] = GLX_SAMPLE_BUFFERS_ARB;
+ spec[i++] = 1;
+ spec[i++] = GLX_SAMPLES_ARB;
+ spec[i++] = f.samples() == -1 ? 4 : f.samples();
+ }
+
+#if defined(GLX_VERSION_1_3) && !defined(Q_OS_HPUX)
+ if (useFBConfig) {
+ spec[i++] = GLX_DRAWABLE_TYPE;
+ switch(paintDevice->devType()) {
+ case QInternal::Pixmap:
+ spec[i++] = GLX_PIXMAP_BIT;
+ break;
+ case QInternal::Pbuffer:
+ spec[i++] = GLX_PBUFFER_BIT;
+ break;
+ default:
+ qWarning("QGLContext: Unknown paint device type %d", paintDevice->devType());
+ // Fall-through & assume it's a window
+ case QInternal::Widget:
+ spec[i++] = GLX_WINDOW_BIT;
+ break;
+ };
+ }
+#endif
+
+ spec[i] = XNone;
+ return useFBConfig;
+}
+
/*****************************************************************************
QGLContext UNIX/GLX-specific code
*****************************************************************************/
@@ -493,21 +649,85 @@ bool QGLContext::chooseContext(const QGLContext* shareContext)
shareContext = 0;
}
+ const int major = d->reqFormat.majorVersion();
+ const int minor = d->reqFormat.minorVersion();
+ const int profile = d->reqFormat.profile() == QGLFormat::CompatibilityProfile
+ ? GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB
+ : GLX_CONTEXT_CORE_PROFILE_BIT_ARB;
+
d->cx = 0;
- if (shareContext) {
+
+#if defined(GLX_VERSION_1_3) && !defined(Q_OS_HPUX)
+ /*
+ HPUX defines GLX_VERSION_1_3 but does not implement the corresponding functions.
+ Specifically glXChooseFBConfig and glXGetVisualFromFBConfig are not implemented.
+ */
+ if ((major == 3 && minor >= 2) || major > 3) {
+ QGLTemporaryContext *tmpContext = 0;
+ if (!QGLContext::currentContext())
+ tmpContext = new QGLTemporaryContext;
+
+ int attributes[] = { GLX_CONTEXT_MAJOR_VERSION_ARB, major,
+ GLX_CONTEXT_MINOR_VERSION_ARB, minor,
+ GLX_CONTEXT_PROFILE_MASK_ARB, profile,
+ 0 };
+
+ typedef GLXContext ( * Q_PFNGLXCREATECONTEXTATTRIBSARBPROC)
+ (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list);
+
+
+ Q_PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribs =
+ (Q_PFNGLXCREATECONTEXTATTRIBSARBPROC) qglx_getProcAddress("glXCreateContextAttribsARB");
+
+ if (glXCreateContextAttribs) {
+ int spec[45];
+ glXGetConfig(disp, (XVisualInfo*)d->vi, GLX_BUFFER_SIZE, &res);
+ buildSpec(spec, format(), d->paintDevice, res, true);
+
+ GLXFBConfig *configs;
+ int configCount = 0;
+ configs = glXChooseFBConfig(disp, xinfo->screen(), spec, &configCount);
+
+ if (configs && configCount > 0) {
+ d->cx = glXCreateContextAttribs(disp, configs[0],
+ shareContext ? (GLXContext)shareContext->d_func()->cx : 0, direct, attributes);
+ if (!d->cx && shareContext) {
+ shareContext = 0;
+ d->cx = glXCreateContextAttribs(disp, configs[0], 0, direct, attributes);
+ }
+ d->screen = ((XVisualInfo*)d->vi)->screen;
+ }
+ XFree(configs);
+ } else {
+ qWarning("QGLContext::chooseContext(): OpenGL %d.%d is not supported", major, minor);
+ }
+
+ if (tmpContext)
+ delete tmpContext;
+ }
+#else
+ Q_UNUSED(major);
+ Q_UNUSED(minor);
+ Q_UNUSED(profile);
+#endif
+
+ if (!d->cx && shareContext) {
d->cx = glXCreateContext(disp, (XVisualInfo *)d->vi,
(GLXContext)shareContext->d_func()->cx, direct);
d->screen = ((XVisualInfo*)d->vi)->screen;
- if (d->cx) {
- QGLContext *share = const_cast<QGLContext *>(shareContext);
- d->sharing = true;
- share->d_func()->sharing = true;
- }
}
if (!d->cx) {
d->cx = glXCreateContext(disp, (XVisualInfo *)d->vi, NULL, direct);
d->screen = ((XVisualInfo*)d->vi)->screen;
+ shareContext = 0;
+ }
+
+ if (shareContext && d->cx) {
+ QGLContext *share = const_cast<QGLContext *>(shareContext);
+ d->sharing = true;
+ share->d_func()->sharing = true;
}
+
if (!d->cx)
return false;
d->glFormat.setDirectRendering(glXIsDirect(disp, (GLXContext)d->cx));
@@ -606,143 +826,8 @@ void *QGLContext::tryVisual(const QGLFormat& f, int bufDepth)
{
Q_D(QGLContext);
int spec[45];
- int i = 0;
- spec[i++] = GLX_LEVEL;
- spec[i++] = f.plane();
const QX11Info *xinfo = qt_x11Info(d->paintDevice);
- bool useFBConfig = false;
-
-#if defined(GLX_VERSION_1_3) && !defined(QT_NO_XRENDER) && !defined(Q_OS_HPUX)
- /*
- HPUX defines GLX_VERSION_1_3 but does not implement the corresponding functions.
- Specifically glXChooseFBConfig and glXGetVisualFromFBConfig are not implemented.
- */
- QWidget* widget = 0;
- if (d->paintDevice->devType() == QInternal::Widget)
- widget = static_cast<QWidget*>(d->paintDevice);
-
- // Only use glXChooseFBConfig for widgets if we're trying to get an ARGB visual
- if (widget && widget->testAttribute(Qt::WA_TranslucentBackground) && X11->use_xrender)
- useFBConfig = true;
-#endif
-
-#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_info)
- static bool useTranspExt = false;
- static bool useTranspExtChecked = false;
- if (f.plane() && !useTranspExtChecked && d->paintDevice) {
- QGLExtensionMatcher extensions(glXQueryExtensionsString(xinfo->display(), xinfo->screen()));
- useTranspExt = extensions.match("GLX_EXT_visual_info");
- //# (A bit simplistic; that could theoretically be a substring)
- if (useTranspExt) {
- QByteArray cstr(glXGetClientString(xinfo->display(), GLX_VENDOR));
- useTranspExt = !cstr.contains("Xi Graphics"); // bug workaround
- if (useTranspExt) {
- // bug workaround - some systems (eg. FireGL) refuses to return an overlay
- // visual if the GLX_TRANSPARENT_TYPE_EXT attribute is specified, even if
- // the implementation supports transparent overlays
- int tmpSpec[] = { GLX_LEVEL, f.plane(), GLX_TRANSPARENT_TYPE_EXT,
- f.rgba() ? GLX_TRANSPARENT_RGB_EXT : GLX_TRANSPARENT_INDEX_EXT,
- XNone };
- XVisualInfo * vinf = glXChooseVisual(xinfo->display(), xinfo->screen(), tmpSpec);
- if (!vinf) {
- useTranspExt = false;
- }
- }
- }
-
- useTranspExtChecked = true;
- }
- if (f.plane() && useTranspExt && !useFBConfig) {
- // Required to avoid non-transparent overlay visual(!) on some systems
- spec[i++] = GLX_TRANSPARENT_TYPE_EXT;
- spec[i++] = f.rgba() ? GLX_TRANSPARENT_RGB_EXT : GLX_TRANSPARENT_INDEX_EXT;
- }
-#endif
-
-#if defined(GLX_VERSION_1_3) && !defined(Q_OS_HPUX)
- // GLX_RENDER_TYPE is only in glx >=1.3
- if (useFBConfig) {
- spec[i++] = GLX_RENDER_TYPE;
- spec[i++] = f.rgba() ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT;
- }
-#endif
-
- if (f.doubleBuffer())
- spec[i++] = GLX_DOUBLEBUFFER;
- if (useFBConfig)
- spec[i++] = True;
- if (f.depth()) {
- spec[i++] = GLX_DEPTH_SIZE;
- spec[i++] = f.depthBufferSize() == -1 ? 1 : f.depthBufferSize();
- }
- if (f.stereo()) {
- spec[i++] = GLX_STEREO;
- if (useFBConfig)
- spec[i++] = True;
- }
- if (f.stencil()) {
- spec[i++] = GLX_STENCIL_SIZE;
- spec[i++] = f.stencilBufferSize() == -1 ? 1 : f.stencilBufferSize();
- }
- if (f.rgba()) {
- if (!useFBConfig)
- spec[i++] = GLX_RGBA;
- spec[i++] = GLX_RED_SIZE;
- spec[i++] = f.redBufferSize() == -1 ? 1 : f.redBufferSize();
- spec[i++] = GLX_GREEN_SIZE;
- spec[i++] = f.greenBufferSize() == -1 ? 1 : f.greenBufferSize();
- spec[i++] = GLX_BLUE_SIZE;
- spec[i++] = f.blueBufferSize() == -1 ? 1 : f.blueBufferSize();
- if (f.alpha()) {
- spec[i++] = GLX_ALPHA_SIZE;
- spec[i++] = f.alphaBufferSize() == -1 ? 1 : f.alphaBufferSize();
- }
- if (f.accum()) {
- spec[i++] = GLX_ACCUM_RED_SIZE;
- spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
- spec[i++] = GLX_ACCUM_GREEN_SIZE;
- spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
- spec[i++] = GLX_ACCUM_BLUE_SIZE;
- spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
- if (f.alpha()) {
- spec[i++] = GLX_ACCUM_ALPHA_SIZE;
- spec[i++] = f.accumBufferSize() == -1 ? 1 : f.accumBufferSize();
- }
- }
- } else {
- spec[i++] = GLX_BUFFER_SIZE;
- spec[i++] = bufDepth;
- }
-
- if (f.sampleBuffers()) {
- spec[i++] = GLX_SAMPLE_BUFFERS_ARB;
- spec[i++] = 1;
- spec[i++] = GLX_SAMPLES_ARB;
- spec[i++] = f.samples() == -1 ? 4 : f.samples();
- }
-
-#if defined(GLX_VERSION_1_3) && !defined(Q_OS_HPUX)
- if (useFBConfig) {
- spec[i++] = GLX_DRAWABLE_TYPE;
- switch(d->paintDevice->devType()) {
- case QInternal::Pixmap:
- spec[i++] = GLX_PIXMAP_BIT;
- break;
- case QInternal::Pbuffer:
- spec[i++] = GLX_PBUFFER_BIT;
- break;
- default:
- qWarning("QGLContext: Unknown paint device type %d", d->paintDevice->devType());
- // Fall-through & assume it's a window
- case QInternal::Widget:
- spec[i++] = GLX_WINDOW_BIT;
- break;
- };
- }
-#endif
-
- spec[i] = XNone;
-
+ bool useFBConfig = buildSpec(spec, f, d->paintDevice, bufDepth, false);
XVisualInfo* chosenVisualInfo = 0;
@@ -755,7 +840,7 @@ void *QGLContext::tryVisual(const QGLFormat& f, int bufDepth)
if (!configs)
break; // fallback to trying glXChooseVisual
- for (i = 0; i < configCount; ++i) {
+ for (int i = 0; i < configCount; ++i) {
XVisualInfo* vi;
vi = glXGetVisualFromFBConfig(xinfo->display(), configs[i]);
if (!vi)
@@ -843,7 +928,7 @@ void QGLContext::makeCurrent()
} else if (d->paintDevice->devType() == QInternal::Pbuffer) {
ok = glXMakeCurrent(xinfo->display(), (GLXPbuffer)d->pbuf, (GLXContext)d->cx);
} else if (d->paintDevice->devType() == QInternal::Widget) {
- ok = glXMakeCurrent(xinfo->display(), ((QWidget *)d->paintDevice)->winId(), (GLXContext)d->cx);
+ ok = glXMakeCurrent(xinfo->display(), ((QWidget *)d->paintDevice)->internalWinId(), (GLXContext)d->cx);
}
if (!ok)
qWarning("QGLContext::makeCurrent(): Failed.");
@@ -1773,6 +1858,9 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmap *pixmap, cons
glXBindTexImageEXT(x11Info.display(), (GLXPixmap)pixmapData->gl_surface, GLX_FRONT_LEFT_EXT, 0);
glBindTexture(GL_TEXTURE_2D, textureId);
+ GLuint filtering = (options & QGLContext::LinearFilteringBindOption) ? GL_LINEAR : GL_NEAREST;
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
if (!((hasAlpha && RGBAConfigInverted) || (!hasAlpha && RGBConfigInverted)))
options &= ~QGLContext::InvertedYBindOption;
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index 890b029..deffc20 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -1024,6 +1024,36 @@ QPaintEngine *QGLFramebufferObject::paintEngine() const
}
/*!
+ \fn bool QGLFramebufferObject::bindDefault()
+ \internal
+
+ Switches rendering back to the default, windowing system provided
+ framebuffer.
+ Returns true upon success, false otherwise.
+
+ \sa bind(), release()
+*/
+bool QGLFramebufferObject::bindDefault()
+{
+ QGLContext *ctx = const_cast<QGLContext *>(QGLContext::currentContext());
+
+ if (ctx) {
+ bool ext_detected = (QGLExtensions::glExtensions() & QGLExtensions::FramebufferObject);
+ if (!ext_detected || (ext_detected && !qt_resolve_framebufferobject_extensions(ctx)))
+ return false;
+
+ ctx->d_ptr->current_fbo = ctx->d_ptr->default_fbo;
+ glBindFramebuffer(GL_FRAMEBUFFER_EXT, ctx->d_ptr->default_fbo);
+#ifdef QT_DEBUG
+ } else {
+ qWarning("QGLFramebufferObject::bindDefault() called without current context.");
+#endif
+ }
+
+ return ctx != 0;
+}
+
+/*!
\fn bool QGLFramebufferObject::hasOpenGLFramebufferObjects()
Returns true if the OpenGL \c{GL_EXT_framebuffer_object} extension
diff --git a/src/opengl/qglframebufferobject.h b/src/opengl/qglframebufferobject.h
index 306b6ff..6ff6645 100644
--- a/src/opengl/qglframebufferobject.h
+++ b/src/opengl/qglframebufferobject.h
@@ -108,6 +108,8 @@ public:
QPaintEngine *paintEngine() const;
GLuint handle() const;
+ static bool bindDefault();
+
static bool hasOpenGLFramebufferObjects();
void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D);
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index 76a605a..4b22d5e 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -1622,11 +1622,48 @@ void QVGPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
QRectF rect(points[0], points[1], points[2] - points[0],
points[5] - points[1]);
clip(rect.toRect(), op);
- } else {
- // The best we can do is clip to the bounding rectangle
- // of all control points.
- clip(path.controlPointRect().toRect(), op);
+ return;
+ }
+
+ // Try converting the path into a QRegion that tightly follows
+ // the outline of the path we want to clip with.
+ QRegion region(path.convertToPainterPath().toFillPolygon(QTransform()).toPolygon());
+ switch (op) {
+ case Qt::NoClip:
+ {
+ region = defaultClipRegion();
+ }
+ break;
+
+ case Qt::ReplaceClip:
+ {
+ region = d->transform.map(region);
+ }
+ break;
+
+ case Qt::IntersectClip:
+ {
+ region = s->clipRegion.intersect(d->transform.map(region));
+ }
+ break;
+
+ case Qt::UniteClip:
+ {
+ region = s->clipRegion.unite(d->transform.map(region));
+ }
+ break;
}
+ if (region.numRects() <= d->maxScissorRects) {
+ // We haven't reached the maximum scissor count yet, so we can
+ // still make use of this region.
+ s->clipRegion = region;
+ updateScissor();
+ return;
+ }
+
+ // The best we can do is clip to the bounding rectangle
+ // of all control points.
+ clip(path.controlPointRect().toRect(), op);
}
void QVGPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp
index 8c26cf0..ab1ba28 100644
--- a/src/plugins/bearer/symbian/symbianengine.cpp
+++ b/src/plugins/bearer/symbian/symbianengine.cpp
@@ -389,9 +389,9 @@ void SymbianEngine::updateConfigurationsL()
QNetworkConfigurationPrivatePointer ptr(cpPriv);
accessPointConfigurations.insert(ident, ptr);
- locker.unlock();
+ mutex.unlock();
emit configurationAdded(ptr);
- locker.relock();
+ mutex.lock();
} else {
delete cpPriv;
}
diff --git a/src/plugins/s60/s60pluginbase.pri b/src/plugins/s60/s60pluginbase.pri
index 1a6f4a2..4e15102 100644
--- a/src/plugins/s60/s60pluginbase.pri
+++ b/src/plugins/s60/s60pluginbase.pri
@@ -8,11 +8,16 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/s60
MMP_RULES += NOEXPORTLIBRARY
-defBlock = \
- "$${LITERAL_HASH}ifdef WINSCW" \
- "DEFFILE ../bwins/qts60plugin.def" \
- "$${LITERAL_HASH}else" \
- "DEFFILE ../eabi/qts60plugin.def" \
- "$${LITERAL_HASH}endif"
+symbian-abld|symbian-sbsv2 {
+ defBlock = \
+ "$${LITERAL_HASH}ifdef WINSCW" \
+ "DEFFILE ../bwins/qts60plugin.def" \
+ "$${LITERAL_HASH}else" \
+ "DEFFILE ../eabi/qts60plugin.def" \
+ "$${LITERAL_HASH}endif"
+} else {
+ CONFIG *= def_files
+ DEF_FILE = ../eabi/qts60pluginu.def
+}
MMP_RULES += defBlock \ No newline at end of file
diff --git a/src/qbase.pri b/src/qbase.pri
index 4a75565..83ae069 100644
--- a/src/qbase.pri
+++ b/src/qbase.pri
@@ -1,4 +1,4 @@
-isEmpty(TARGET):error(You must set TARGET before include()'ing $${_FILE_})
+isEmpty(TARGET):error("You must set TARGET before include()'ing $${_FILE_}")
INCLUDEPATH *= $$QMAKE_INCDIR_QT/$$TARGET #just for today to have some compat
!isEmpty(RCC_DIR): INCLUDEPATH += $$RCC_DIR
isEmpty(QT_ARCH):!isEmpty(ARCH):QT_ARCH=$$ARCH #another compat that will rot for change #215700
diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def
index 3df0f47..2992cf6 100644
--- a/src/s60installs/bwins/QtDeclarativeu.def
+++ b/src/s60installs/bwins/QtDeclarativeu.def
@@ -862,7 +862,7 @@ EXPORTS
?cursorPositionChanged@QDeclarativeTextEdit@@IAEXXZ @ 861 NONAME ; void QDeclarativeTextEdit::cursorPositionChanged(void)
?cursorPositionChanged@QDeclarativeTextInput@@IAEXXZ @ 862 NONAME ; void QDeclarativeTextInput::cursorPositionChanged(void)
?cursorRect@QDeclarativeTextEdit@@QBE?AVQRect@@XZ @ 863 NONAME ABSENT ; class QRect QDeclarativeTextEdit::cursorRect(void) const
- ?cursorRect@QDeclarativeTextInput@@QBE?AVQRect@@XZ @ 864 NONAME ; class QRect QDeclarativeTextInput::cursorRect(void) const
+ ?cursorRect@QDeclarativeTextInput@@QBE?AVQRect@@XZ @ 864 NONAME ABSENT ; class QRect QDeclarativeTextInput::cursorRect(void) const
?cursorVisibleChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 865 NONAME ; void QDeclarativeTextEdit::cursorVisibleChanged(bool)
?cursorVisibleChanged@QDeclarativeTextInput@@IAEX_N@Z @ 866 NONAME ; void QDeclarativeTextInput::cursorVisibleChanged(bool)
?customParser@QDeclarativeType@@QBEPAVQDeclarativeCustomParser@@XZ @ 867 NONAME ; class QDeclarativeCustomParser * QDeclarativeType::customParser(void) const
@@ -2568,10 +2568,10 @@ EXPORTS
?setSelectedTextColor@QDeclarativeTextInput@@QAEXABVQColor@@@Z @ 2567 NONAME ; void QDeclarativeTextInput::setSelectedTextColor(class QColor const &)
?setSelectionColor@QDeclarativeTextEdit@@QAEXABVQColor@@@Z @ 2568 NONAME ; void QDeclarativeTextEdit::setSelectionColor(class QColor const &)
?setSelectionColor@QDeclarativeTextInput@@QAEXABVQColor@@@Z @ 2569 NONAME ; void QDeclarativeTextInput::setSelectionColor(class QColor const &)
- ?setSelectionEnd@QDeclarativeTextEdit@@QAEXH@Z @ 2570 NONAME ; void QDeclarativeTextEdit::setSelectionEnd(int)
- ?setSelectionEnd@QDeclarativeTextInput@@QAEXH@Z @ 2571 NONAME ; void QDeclarativeTextInput::setSelectionEnd(int)
- ?setSelectionStart@QDeclarativeTextEdit@@QAEXH@Z @ 2572 NONAME ; void QDeclarativeTextEdit::setSelectionStart(int)
- ?setSelectionStart@QDeclarativeTextInput@@QAEXH@Z @ 2573 NONAME ; void QDeclarativeTextInput::setSelectionStart(int)
+ ?setSelectionEnd@QDeclarativeTextEdit@@QAEXH@Z @ 2570 NONAME ABSENT ; void QDeclarativeTextEdit::setSelectionEnd(int)
+ ?setSelectionEnd@QDeclarativeTextInput@@QAEXH@Z @ 2571 NONAME ABSENT ; void QDeclarativeTextInput::setSelectionEnd(int)
+ ?setSelectionStart@QDeclarativeTextEdit@@QAEXH@Z @ 2572 NONAME ABSENT ; void QDeclarativeTextEdit::setSelectionStart(int)
+ ?setSelectionStart@QDeclarativeTextInput@@QAEXH@Z @ 2573 NONAME ABSENT ; void QDeclarativeTextInput::setSelectionStart(int)
?setSmooth@QDeclarativeItem@@QAEX_N@Z @ 2574 NONAME ; void QDeclarativeItem::setSmooth(bool)
?setSmoothCache@QDeclarativePaintedItem@@QAEX_N@Z @ 2575 NONAME ; void QDeclarativePaintedItem::setSmoothCache(bool)
?setSnapMode@QDeclarativeListView@@QAEXW4SnapMode@1@@Z @ 2576 NONAME ; void QDeclarativeListView::setSnapMode(enum QDeclarativeListView::SnapMode)
@@ -3891,7 +3891,7 @@ EXPORTS
?wrapMode@QDeclarativeTextEdit@@QBE?AW4WrapMode@1@XZ @ 3890 NONAME ; enum QDeclarativeTextEdit::WrapMode QDeclarativeTextEdit::wrapMode(void) const
?wrapModeChanged@QDeclarativeText@@IAEXXZ @ 3891 NONAME ; void QDeclarativeText::wrapModeChanged(void)
?wrapModeChanged@QDeclarativeTextEdit@@IAEXXZ @ 3892 NONAME ; void QDeclarativeTextEdit::wrapModeChanged(void)
- ?xToPosition@QDeclarativeTextInput@@QAEHH@Z @ 3893 NONAME ; int QDeclarativeTextInput::xToPosition(int)
+ ?xToPosition@QDeclarativeTextInput@@QAEHH@Z @ 3893 NONAME ABSENT ; int QDeclarativeTextInput::xToPosition(int)
?staticMetaObject@QDeclarativeSmoothedFollow@@2UQMetaObject@@B @ 3894 NONAME ; struct QMetaObject const QDeclarativeSmoothedFollow::staticMetaObject
?trUtf8@QDeclarativeCompiler@@SA?AVQString@@PBD0H@Z @ 3895 NONAME ; class QString QDeclarativeCompiler::trUtf8(char const *, char const *, int)
?findSignalByName@QDeclarativePropertyPrivate@@SA?AVQMetaMethod@@PBUQMetaObject@@ABVQByteArray@@@Z @ 3896 NONAME ; class QMetaMethod QDeclarativePropertyPrivate::findSignalByName(struct QMetaObject const *, class QByteArray const &)
@@ -4024,10 +4024,10 @@ EXPORTS
?restart@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 4023 NONAME ; long long QDeclarativeItemPrivate::restart(class QElapsedTimer &)
?get@QDeclarativeXmlListModel@@QBE?AVQScriptValue@@H@Z @ 4024 NONAME ; class QScriptValue QDeclarativeXmlListModel::get(int) const
?setScale@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4025 NONAME ; void QDeclarativeParentChange::setScale(class QDeclarativeScriptString)
- ?showInputPanelOnFocusChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 4026 NONAME ; void QDeclarativeTextEdit::showInputPanelOnFocusChanged(bool)
+ ?showInputPanelOnFocusChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 4026 NONAME ABSENT ; void QDeclarativeTextEdit::showInputPanelOnFocusChanged(bool)
?focusOutEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4027 NONAME ; void QDeclarativeTextInput::focusOutEvent(class QFocusEvent *)
?height@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4028 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::height(void) const
- ?showInputPanelOnFocus@QDeclarativeTextEdit@@QBE_NXZ @ 4029 NONAME ; bool QDeclarativeTextEdit::showInputPanelOnFocus(void) const
+ ?showInputPanelOnFocus@QDeclarativeTextEdit@@QBE_NXZ @ 4029 NONAME ABSENT ; bool QDeclarativeTextEdit::showInputPanelOnFocus(void) const
?errorString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 4030 NONAME ; class QString QDeclarativeComponent::errorString(void) const
?elapsed@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 4031 NONAME ; long long QDeclarativeItemPrivate::elapsed(class QElapsedTimer &)
?focusInEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4032 NONAME ; void QDeclarativeTextInput::focusInEvent(class QFocusEvent *)
@@ -4042,15 +4042,15 @@ EXPORTS
?errorString@QDeclarativeXmlListModel@@QBE?AVQString@@XZ @ 4041 NONAME ; class QString QDeclarativeXmlListModel::errorString(void) const
?consistentTime@QDeclarativeItemPrivate@@2_JA @ 4042 NONAME ; long long QDeclarativeItemPrivate::consistentTime
?scale@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4043 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::scale(void) const
- ?showInputPanelOnFocus@QDeclarativeTextInput@@QBE_NXZ @ 4044 NONAME ; bool QDeclarativeTextInput::showInputPanelOnFocus(void) const
+ ?showInputPanelOnFocus@QDeclarativeTextInput@@QBE_NXZ @ 4044 NONAME ABSENT ; bool QDeclarativeTextInput::showInputPanelOnFocus(void) const
?focusInEvent@QDeclarativeTextEdit@@MAEXPAVQFocusEvent@@@Z @ 4045 NONAME ; void QDeclarativeTextEdit::focusInEvent(class QFocusEvent *)
?y@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4046 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::y(void) const
?setY@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4047 NONAME ; void QDeclarativeParentChange::setY(class QDeclarativeScriptString)
- ?setShowInputPanelOnFocus@QDeclarativeTextEdit@@QAEX_N@Z @ 4048 NONAME ; void QDeclarativeTextEdit::setShowInputPanelOnFocus(bool)
+ ?setShowInputPanelOnFocus@QDeclarativeTextEdit@@QAEX_N@Z @ 4048 NONAME ABSENT ; void QDeclarativeTextEdit::setShowInputPanelOnFocus(bool)
?paintedSizeChanged@QDeclarativeText@@IAEXXZ @ 4049 NONAME ; void QDeclarativeText::paintedSizeChanged(void)
?selectByMouseChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 4050 NONAME ; void QDeclarativeTextEdit::selectByMouseChanged(bool)
?openSoftwareInputPanel@QDeclarativeTextInput@@QAEXXZ @ 4051 NONAME ; void QDeclarativeTextInput::openSoftwareInputPanel(void)
- ?setShowInputPanelOnFocus@QDeclarativeTextInput@@QAEX_N@Z @ 4052 NONAME ; void QDeclarativeTextInput::setShowInputPanelOnFocus(bool)
+ ?setShowInputPanelOnFocus@QDeclarativeTextInput@@QAEX_N@Z @ 4052 NONAME ABSENT ; void QDeclarativeTextInput::setShowInputPanelOnFocus(bool)
?boundingRect@QDeclarativePaintedItem@@MBE?AVQRectF@@XZ @ 4053 NONAME ; class QRectF QDeclarativePaintedItem::boundingRect(void) const
?closeSoftwareInputPanel@QDeclarativeTextInput@@QAEXXZ @ 4054 NONAME ; void QDeclarativeTextInput::closeSoftwareInputPanel(void)
?setWidth@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4055 NONAME ; void QDeclarativeParentChange::setWidth(class QDeclarativeScriptString)
@@ -4067,11 +4067,25 @@ EXPORTS
?selectByMouse@QDeclarativeTextEdit@@QBE_NXZ @ 4066 NONAME ; bool QDeclarativeTextEdit::selectByMouse(void) const
?setHeight@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4067 NONAME ; void QDeclarativeParentChange::setHeight(class QDeclarativeScriptString)
?start@QDeclarativeItemPrivate@@SAXAAVQElapsedTimer@@@Z @ 4068 NONAME ; void QDeclarativeItemPrivate::start(class QElapsedTimer &)
- ?showInputPanelOnFocusChanged@QDeclarativeTextInput@@IAEX_N@Z @ 4069 NONAME ; void QDeclarativeTextInput::showInputPanelOnFocusChanged(bool)
+ ?showInputPanelOnFocusChanged@QDeclarativeTextInput@@IAEX_N@Z @ 4069 NONAME ABSENT ; void QDeclarativeTextInput::showInputPanelOnFocusChanged(bool)
?x@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4070 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::x(void) const
?selectByMouseChanged@QDeclarativeTextInput@@IAEX_N@Z @ 4071 NONAME ; void QDeclarativeTextInput::selectByMouseChanged(bool)
?width@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4072 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::width(void) const
?openSoftwareInputPanel@QDeclarativeTextEdit@@QAEXXZ @ 4073 NONAME ; void QDeclarativeTextEdit::openSoftwareInputPanel(void)
?cursorRectangleChanged@QDeclarativeTextEdit@@IAEXXZ @ 4074 NONAME ; void QDeclarativeTextEdit::cursorRectangleChanged(void)
?cursorRectangle@QDeclarativeTextEdit@@QBE?AVQRect@@XZ @ 4075 NONAME ; class QRect QDeclarativeTextEdit::cursorRectangle(void) const
+ ?selectWord@QDeclarativeTextInput@@QAEXXZ @ 4076 NONAME ; void QDeclarativeTextInput::selectWord(void)
+ ?positionToRectangle@QDeclarativeTextEdit@@QBE?AVQRectF@@H@Z @ 4077 NONAME ; class QRectF QDeclarativeTextEdit::positionToRectangle(int) const
+ ?cursorRectangle@QDeclarativeTextInput@@QBE?AVQRect@@XZ @ 4078 NONAME ; class QRect QDeclarativeTextInput::cursorRectangle(void) const
+ ?mouseDoubleClickEvent@QDeclarativeTextInput@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 4079 NONAME ; void QDeclarativeTextInput::mouseDoubleClickEvent(class QGraphicsSceneMouseEvent *)
+ ?positionAt@QDeclarativeTextEdit@@QBEHHH@Z @ 4080 NONAME ; int QDeclarativeTextEdit::positionAt(int, int) const
+ ?cut@QDeclarativeTextEdit@@QAEXXZ @ 4081 NONAME ; void QDeclarativeTextEdit::cut(void)
+ ?copy@QDeclarativeTextEdit@@QAEXXZ @ 4082 NONAME ; void QDeclarativeTextEdit::copy(void)
+ ?select@QDeclarativeTextEdit@@QAEXHH@Z @ 4083 NONAME ; void QDeclarativeTextEdit::select(int, int)
+ ?moveCursorSelection@QDeclarativeTextEdit@@QAEXH@Z @ 4084 NONAME ; void QDeclarativeTextEdit::moveCursorSelection(int)
+ ?select@QDeclarativeTextInput@@QAEXHH@Z @ 4085 NONAME ; void QDeclarativeTextInput::select(int, int)
+ ?paste@QDeclarativeTextEdit@@QAEXXZ @ 4086 NONAME ; void QDeclarativeTextEdit::paste(void)
+ ?positionToRectangle@QDeclarativeTextInput@@QBE?AVQRectF@@H@Z @ 4087 NONAME ; class QRectF QDeclarativeTextInput::positionToRectangle(int) const
+ ?positionAt@QDeclarativeTextInput@@QBEHH@Z @ 4088 NONAME ; int QDeclarativeTextInput::positionAt(int) const
+ ?selectWord@QDeclarativeTextEdit@@QAEXXZ @ 4089 NONAME ; void QDeclarativeTextEdit::selectWord(void)
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index a1e05e2..9b4ecc2 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -12805,4 +12805,12 @@ EXPORTS
?setPerformanceHint@QStaticText@@QAEXW4PerformanceHint@1@@Z @ 12804 NONAME ; void QStaticText::setPerformanceHint(enum QStaticText::PerformanceHint)
??0QStaticText@@QAE@ABV0@@Z @ 12805 NONAME ; QStaticText::QStaticText(class QStaticText const &)
??0QImageTextureGlyphCache@@QAE@W4Type@QFontEngineGlyphCache@@ABVQTransform@@@Z @ 12806 NONAME ; QImageTextureGlyphCache::QImageTextureGlyphCache(enum QFontEngineGlyphCache::Type, class QTransform const &)
+ ?verticalMovementX@QTextCursor@@QBEHXZ @ 12807 NONAME ; int QTextCursor::verticalMovementX(void) const
+ ?runtime_graphics_system@QApplicationPrivate@@2_NA @ 12808 NONAME ; bool QApplicationPrivate::runtime_graphics_system
+ ?keepPositionOnInsert@QTextCursor@@QBE_NXZ @ 12809 NONAME ; bool QTextCursor::keepPositionOnInsert(void) const
+ ?setKeepPositionOnInsert@QTextCursor@@QAEX_N@Z @ 12810 NONAME ; void QTextCursor::setKeepPositionOnInsert(bool)
+ ?textDirection@QProgressBar@@QBE?AW4Direction@1@XZ @ 12811 NONAME ; enum QProgressBar::Direction QProgressBar::textDirection(void) const
+ ?setVerticalMovementX@QTextCursor@@QAEXH@Z @ 12812 NONAME ; void QTextCursor::setVerticalMovementX(int)
+ ?invertedAppearance@QProgressBar@@QBE_NXZ @ 12813 NONAME ; bool QProgressBar::invertedAppearance(void) const
+ ?width@QFontMetrics@@QBEHABVQString@@HH@Z @ 12814 NONAME ; int QFontMetrics::width(class QString const &, int, int) const
diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def
index 320a780..1c4cd5d 100644
--- a/src/s60installs/eabi/QtDeclarativeu.def
+++ b/src/s60installs/eabi/QtDeclarativeu.def
@@ -911,7 +911,7 @@ EXPORTS
_ZN20QDeclarativeTextEdit15mousePressEventEP24QGraphicsSceneMouseEvent @ 910 NONAME
_ZN20QDeclarativeTextEdit15readOnlyChangedEb @ 911 NONAME
_ZN20QDeclarativeTextEdit15setFocusOnPressEb @ 912 NONAME
- _ZN20QDeclarativeTextEdit15setSelectionEndEi @ 913 NONAME
+ _ZN20QDeclarativeTextEdit15setSelectionEndEi @ 913 NONAME ABSENT
_ZN20QDeclarativeTextEdit16inputMethodEventEP17QInputMethodEvent @ 914 NONAME
_ZN20QDeclarativeTextEdit16selectionChangedEv @ 915 NONAME
_ZN20QDeclarativeTextEdit16setCursorVisibleEb @ 916 NONAME
@@ -921,7 +921,7 @@ EXPORTS
_ZN20QDeclarativeTextEdit17setCursorDelegateEP21QDeclarativeComponent @ 920 NONAME
_ZN20QDeclarativeTextEdit17setCursorPositionEi @ 921 NONAME
_ZN20QDeclarativeTextEdit17setSelectionColorERK6QColor @ 922 NONAME
- _ZN20QDeclarativeTextEdit17setSelectionStartEi @ 923 NONAME
+ _ZN20QDeclarativeTextEdit17setSelectionStartEi @ 923 NONAME ABSENT
_ZN20QDeclarativeTextEdit17textFormatChangedENS_10TextFormatE @ 924 NONAME
_ZN20QDeclarativeTextEdit17textMarginChangedEf @ 925 NONAME
_ZN20QDeclarativeTextEdit18loadCursorDelegateEv @ 926 NONAME
@@ -1207,7 +1207,7 @@ EXPORTS
_ZN21QDeclarativeTextInput15mousePressEventEP24QGraphicsSceneMouseEvent @ 1206 NONAME
_ZN21QDeclarativeTextInput15readOnlyChangedEb @ 1207 NONAME
_ZN21QDeclarativeTextInput15setFocusOnPressEb @ 1208 NONAME
- _ZN21QDeclarativeTextInput15setSelectionEndEi @ 1209 NONAME
+ _ZN21QDeclarativeTextInput15setSelectionEndEi @ 1209 NONAME ABSENT
_ZN21QDeclarativeTextInput16cursorPosChangedEv @ 1210 NONAME
_ZN21QDeclarativeTextInput16inputMaskChangedERK7QString @ 1211 NONAME
_ZN21QDeclarativeTextInput16selectionChangedEv @ 1212 NONAME
@@ -1218,7 +1218,7 @@ EXPORTS
_ZN21QDeclarativeTextInput17setCursorDelegateEP21QDeclarativeComponent @ 1217 NONAME
_ZN21QDeclarativeTextInput17setCursorPositionEi @ 1218 NONAME
_ZN21QDeclarativeTextInput17setSelectionColorERK6QColor @ 1219 NONAME
- _ZN21QDeclarativeTextInput17setSelectionStartEi @ 1220 NONAME
+ _ZN21QDeclarativeTextInput17setSelectionStartEi @ 1220 NONAME ABSENT
_ZN21QDeclarativeTextInput19focusOnPressChangedEb @ 1221 NONAME
_ZN21QDeclarativeTextInput19getStaticMetaObjectEv @ 1222 NONAME
_ZN21QDeclarativeTextInput19selectedTextChangedEv @ 1223 NONAME
@@ -2627,7 +2627,7 @@ EXPORTS
_ZNK21QDeclarativeRectangle8gradientEv @ 2626 NONAME
_ZNK21QDeclarativeScaleGrid10metaObjectEv @ 2627 NONAME
_ZNK21QDeclarativeScaleGrid6isNullEv @ 2628 NONAME
- _ZNK21QDeclarativeTextInput10cursorRectEv @ 2629 NONAME
+ _ZNK21QDeclarativeTextInput10cursorRectEv @ 2629 NONAME ABSENT
_ZNK21QDeclarativeTextInput10isReadOnlyEv @ 2630 NONAME
_ZNK21QDeclarativeTextInput10metaObjectEv @ 2631 NONAME
_ZNK21QDeclarativeTextInput12focusOnPressEv @ 2632 NONAME
@@ -3413,7 +3413,7 @@ EXPORTS
_ZN20QDeclarativePathView28highlightMoveDurationChangedEv @ 3412 NONAME
_ZN20QDeclarativeTextEdit11setWrapModeENS_8WrapModeE @ 3413 NONAME
_ZN20QDeclarativeTextEdit15wrapModeChangedEv @ 3414 NONAME
- _ZN21QDeclarativeTextInput11xToPositionEi @ 3415 NONAME
+ _ZN21QDeclarativeTextInput11xToPositionEi @ 3415 NONAME ABSENT
_ZN21QDeclarativeTextInput13setAutoScrollEb @ 3416 NONAME
_ZN21QDeclarativeTextInput14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3417 NONAME
_ZN21QDeclarativeTextInput17autoScrollChangedEb @ 3418 NONAME
@@ -3612,16 +3612,16 @@ EXPORTS
_ZN20QDeclarativeTextEdit22cursorRectangleChangedEv @ 3611 NONAME
_ZN20QDeclarativeTextEdit22openSoftwareInputPanelEv @ 3612 NONAME
_ZN20QDeclarativeTextEdit23closeSoftwareInputPanelEv @ 3613 NONAME
- _ZN20QDeclarativeTextEdit24setShowInputPanelOnFocusEb @ 3614 NONAME
- _ZN20QDeclarativeTextEdit28showInputPanelOnFocusChangedEb @ 3615 NONAME
+ _ZN20QDeclarativeTextEdit24setShowInputPanelOnFocusEb @ 3614 NONAME ABSENT
+ _ZN20QDeclarativeTextEdit28showInputPanelOnFocusChangedEb @ 3615 NONAME ABSENT
_ZN21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3616 NONAME
_ZN21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3617 NONAME
_ZN21QDeclarativeTextInput16setSelectByMouseEb @ 3618 NONAME
_ZN21QDeclarativeTextInput20selectByMouseChangedEb @ 3619 NONAME
_ZN21QDeclarativeTextInput22openSoftwareInputPanelEv @ 3620 NONAME
_ZN21QDeclarativeTextInput23closeSoftwareInputPanelEv @ 3621 NONAME
- _ZN21QDeclarativeTextInput24setShowInputPanelOnFocusEb @ 3622 NONAME
- _ZN21QDeclarativeTextInput28showInputPanelOnFocusChangedEb @ 3623 NONAME
+ _ZN21QDeclarativeTextInput24setShowInputPanelOnFocusEb @ 3622 NONAME ABSENT
+ _ZN21QDeclarativeTextInput28showInputPanelOnFocusChangedEb @ 3623 NONAME ABSENT
_ZN22QDeclarativeExpressionC1EP19QDeclarativeContextP7QObjectRK7QStringS3_ @ 3624 NONAME
_ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QString @ 3625 NONAME
_ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QStringR29QDeclarativeExpressionPrivate @ 3626 NONAME
@@ -3645,10 +3645,10 @@ EXPORTS
_ZNK20QDeclarativeTextEdit13paintedHeightEv @ 3644 NONAME
_ZNK20QDeclarativeTextEdit13selectByMouseEv @ 3645 NONAME
_ZNK20QDeclarativeTextEdit15cursorRectangleEv @ 3646 NONAME
- _ZNK20QDeclarativeTextEdit21showInputPanelOnFocusEv @ 3647 NONAME
+ _ZNK20QDeclarativeTextEdit21showInputPanelOnFocusEv @ 3647 NONAME ABSENT
_ZNK21QDeclarativeComponent11errorStringEv @ 3648 NONAME
_ZNK21QDeclarativeTextInput13selectByMouseEv @ 3649 NONAME
- _ZNK21QDeclarativeTextInput21showInputPanelOnFocusEv @ 3650 NONAME
+ _ZNK21QDeclarativeTextInput21showInputPanelOnFocusEv @ 3650 NONAME ABSENT
_ZNK23QDeclarativePaintedItem12boundingRectEv @ 3651 NONAME
_ZNK24QDeclarativeXmlListModel11errorStringEv @ 3652 NONAME
_ZNK24QDeclarativeXmlListModel3getEi @ 3653 NONAME
@@ -3657,4 +3657,19 @@ EXPORTS
_ZThn8_N21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3656 NONAME
_ZThn8_N21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3657 NONAME
_ZThn8_NK23QDeclarativePaintedItem12boundingRectEv @ 3658 NONAME
+ _ZN20QDeclarativeTextEdit10selectWordEv @ 3659 NONAME
+ _ZN20QDeclarativeTextEdit19moveCursorSelectionEi @ 3660 NONAME
+ _ZN20QDeclarativeTextEdit3cutEv @ 3661 NONAME
+ _ZN20QDeclarativeTextEdit4copyEv @ 3662 NONAME
+ _ZN20QDeclarativeTextEdit5pasteEv @ 3663 NONAME
+ _ZN20QDeclarativeTextEdit6selectEii @ 3664 NONAME
+ _ZN21QDeclarativeTextInput10selectWordEv @ 3665 NONAME
+ _ZN21QDeclarativeTextInput21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3666 NONAME
+ _ZN21QDeclarativeTextInput6selectEii @ 3667 NONAME
+ _ZNK20QDeclarativeTextEdit10positionAtEii @ 3668 NONAME
+ _ZNK20QDeclarativeTextEdit19positionToRectangleEi @ 3669 NONAME
+ _ZNK21QDeclarativeTextInput10positionAtEi @ 3670 NONAME
+ _ZNK21QDeclarativeTextInput15cursorRectangleEv @ 3671 NONAME
+ _ZNK21QDeclarativeTextInput19positionToRectangleEi @ 3672 NONAME
+ _ZThn8_N21QDeclarativeTextInput21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3673 NONAME
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 8aafde9..9c1002d 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12006,4 +12006,10 @@ EXPORTS
_ZTV20QGraphicsViewPrivate @ 12005 NONAME
_ZTV23QImageTextureGlyphCache @ 12006 NONAME
_ZTV26QAbstractScrollAreaPrivate @ 12007 NONAME
+ _ZN11QTextCursor20setVerticalMovementXEi @ 12008 NONAME
+ _ZN11QTextCursor23setKeepPositionOnInsertEb @ 12009 NONAME
+ _ZN19QApplicationPrivate23runtime_graphics_systemE @ 12010 NONAME DATA 1
+ _ZNK11QTextCursor17verticalMovementXEv @ 12011 NONAME
+ _ZNK11QTextCursor20keepPositionOnInsertEv @ 12012 NONAME
+ _ZNK12QFontMetrics5widthERK7QStringii @ 12013 NONAME
diff --git a/src/s60installs/qt.iby b/src/s60installs/qt.iby
index ec019e2..f43f344 100644
--- a/src/s60installs/qt.iby
+++ b/src/s60installs/qt.iby
@@ -74,6 +74,21 @@ data=\epoc32\data\z\resource\qt\plugins\codecs\qtwcodecs.qtplugin resou
// iconengines stubs
data=\epoc32\data\z\resource\qt\plugins\iconengines\qsvgicon.qtplugin resource\qt\plugins\iconengines\qsvgicon.qtplugin
+// qml import plugins
+file=ABI_DIR\BUILD_DIR\qmlwebkitplugin.dll SHARED_LIB_DIR\qmlwebkitplugin.dll
+file=ABI_DIR\BUILD_DIR\qmlfolderlistmodelplugin.dll SHARED_LIB_DIR\qmlfolderlistmodelplugin.dll
+file=ABI_DIR\BUILD_DIR\qmlgesturesplugin.dll SHARED_LIB_DIR\qmlgesturesplugin.dll
+file=ABI_DIR\BUILD_DIR\qmlparticlesplugin.dll SHARED_LIB_DIR\qmlparticlesplugin.dll
+
+data=\epoc32\data\z\resource\qt\imports\org\webkit\qmlwebkitplugin.qtplugin resource\qt\imports\org\webkit\qmlwebkitplugin.qtplugin
+data=\epoc32\data\z\resource\qt\imports\Qt\labs\folderlistmodel\qmlfolderlistmodelplugin.qtplugin resource\qt\imports\Qt\labs\folderlistmodel\qmlfolderlistmodelplugin.qtplugin
+data=\epoc32\data\z\resource\qt\imports\Qt\labs\gestures\qmlgesturesplugin.qtplugin resource\qt\imports\Qt\labs\gestures\qmlgesturesplugin.qtplugin
+data=\epoc32\data\z\resource\qt\imports\Qt\labs\particles\qmlparticlesplugin.qtplugin resource\qt\imports\Qt\labs\particles\qmlparticlesplugin.qtplugin
+
+data=\epoc32\data\z\resource\qt\imports\org\webkit\qmldir resource\qt\imports\org\webkit\qmldir
+data=\epoc32\data\z\resource\qt\imports\Qt\labs\folderlistmodel\qmldir resource\qt\imports\Qt\labs\folderlistmodel\qmldir
+data=\epoc32\data\z\resource\qt\imports\Qt\labs\gestures\qmldir resource\qt\imports\Qt\labs\gestures\qmldir
+data=\epoc32\data\z\resource\qt\imports\Qt\labs\particles\qmldir resource\qt\imports\Qt\labs\particles\qmldir
// QtMultimedia audio backend
data=\epoc32\data\qt\qtlibspluginstubs\qaudio.qtplugin resource\qt\plugins\audio\qaudio.qtplugin
diff --git a/src/s60installs/qt.svg b/src/s60installs/qt.svg
index 6230ada..566acfa 100644
--- a/src/s60installs/qt.svg
+++ b/src/s60installs/qt.svg
@@ -1,17 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" height="146.3063" version="1.0" viewBox="0 0 122 146" width="121.60006">
-<g transform="translate(-376.34283,-407.78046)">
-<g transform="matrix(0.697424,0,0,0.697424,376.34283,407.78046)">
-<path d="M 43.086,0.358597 C 40.9414,0.00358582 38.8399,-0.0824127 36.8086,0.0775909 L 36.8047,0.0735931 C 36.8047,0.0735931 22.9219,1.01859 22.2891,1.0696 C 9.6211,2.08159 0,12.5036 0,26.8896 L 0,196.554 L 14.1914,209.781 L 156.789,185.816 C 166.606,184.113 174.356,172.538 174.356,160.038 L 174.356,21.8786 L 43.086,0.358597 z" style="fill:#006225;fill-rule:evenodd;stroke:none"/>
-<path d="M 174.356,160.042 C 174.356,172.538 166.606,184.113 156.789,185.816 L 14.1914,209.781 L 14.1914,25.9916 C 14.1914,9.2726 27.5313,-2.20741 43.086,0.358597 L 174.356,21.8786 L 174.356,160.042 z" style="fill:#80c342;fill-rule:evenodd;stroke:none"/>
-<path d="M 130.422,45.9136 L 141.938,47.1516 L 141.938,67.3626 L 154.899,68.2766 L 154.899,80.9566 L 141.938,80.3586 L 141.938,126.691 C 141.938,130.723 142.383,133.316 143.278,134.48 C 144.078,135.547 145.324,136.074 146.988,136.074 C 147.149,136.074 147.317,136.07 147.485,136.058 C 150.035,135.91 152.805,135.125 155.828,133.75 L 155.828,145.398 C 150.692,147.656 145.653,148.996 140.703,149.418 C 139.985,149.473 139.293,149.504 138.625,149.504 C 134.145,149.504 130.719,148.203 128.379,145.57 C 125.649,142.519 124.289,137.621 124.289,130.898 L 124.289,79.5426 L 118.063,79.2576 L 118.063,65.6716 L 125.649,66.2186 L 130.422,45.9136 z" style="fill:#ffffff;fill-rule:evenodd;stroke:none"/>
-<path d="M 154.899,80.9566 L 141.938,80.3586 L 141.938,80.6366 L 148.883,80.9566 L 154.899,80.9566 z" style="fill:#006225;fill-rule:evenodd;stroke:none"/>
-<path d="M 144.637,135.598 C 145.297,135.926 146.067,136.074 146.988,136.074 C 147.149,136.074 147.317,136.07 147.485,136.058 C 150.035,135.91 152.805,135.125 155.828,133.75 L 149.813,133.75 C 147.992,134.582 146.281,135.207 144.637,135.598 z" style="fill:#006225;fill-rule:evenodd;stroke:none"/>
-<path d="M 128.379,145.57 C 125.649,142.519 124.289,137.621 124.289,130.898 L 124.289,79.5426 L 118.063,79.2576 L 118.063,65.6716 L 112.047,65.6716 L 112.047,68.7066 C 112.918,71.9796 113.602,75.5266 114.11,79.3506 L 118.274,79.5426 L 118.274,130.898 C 118.274,137.621 119.641,142.519 122.364,145.57 C 124.707,148.203 128.129,149.504 132.61,149.504 L 138.625,149.504 C 134.145,149.504 130.719,148.203 128.379,145.57 z M 130.422,45.9136 L 124.406,45.9136 L 119.738,65.7966 L 125.649,66.2186 L 130.422,45.9136 z" style="fill:#006225;fill-rule:evenodd;stroke:none"/>
-<path d="M 91.1528,132.406 C 93.5038,126.355 94.6638,114.492 94.6638,96.7886 C 94.6638,80.8976 93.5158,69.9726 91.1798,63.9756 C 88.8438,57.9486 85.3478,54.6946 80.6598,54.2846 C 80.3008,54.2536 79.9458,54.2336 79.6018,54.2336 C 75.2618,54.2336 71.9218,56.7686 69.5938,61.8586 C 67.0738,67.4016 65.8008,78.8976 65.8008,96.2966 C 65.8008,113.113 67.0388,125.047 69.5348,132.051 C 71.8908,138.723 75.4138,142.027 80.0388,142.027 C 80.2458,142.027 80.4488,142.019 80.6598,142.008 C 85.2928,141.715 88.7808,138.512 91.1528,132.406 M 109.129,136.156 C 105.012,145.863 98.7348,152.214 90.1408,155.156 C 91.0078,159.605 92.3168,162.597 94.0628,164.175 C 95.4138,165.386 97.4958,165.996 100.285,165.996 C 101.09,165.996 101.953,165.941 102.875,165.839 L 102.875,178.964 L 96.9138,179.746 C 95.1558,179.976 93.4878,180.089 91.9098,180.089 C 86.6918,180.089 82.4648,178.824 79.2888,176.265 C 75.0818,172.886 71.9808,166.371 69.9918,156.73 C 60.8555,154.785 53.7344,148.976 48.8008,139.226 C 43.7969,129.324 41.25,114.836 41.25,95.8866 C 41.25,75.4566 44.7344,60.3786 51.5938,50.8156 C 57.3828,42.7456 65.4568,38.7766 75.6168,38.7766 C 77.2458,38.7766 78.9258,38.8786 80.6598,39.0816 C 92.6138,40.4566 101.278,46.0976 106.918,55.8706 C 112.453,65.4326 115.172,79.1366 115.172,97.1326 C 115.172,113.617 113.172,126.582 109.129,136.156 z" style="fill:#ffffff;fill-rule:evenodd;stroke:none"/>
-<path d="M 100.281,165.996 C 101.09,165.996 101.953,165.941 102.871,165.839 L 98.0348,165.839 C 98.7108,165.945 99.4878,165.996 100.281,165.996 z" style="fill:#006225;fill-rule:evenodd;stroke:none"/>
-<path d="M 84.8518,63.9756 C 87.1878,69.9726 88.3358,80.8976 88.3358,96.7886 C 88.3358,114.492 87.1758,126.355 84.8238,132.406 C 82.9298,137.285 80.2968,140.308 76.9608,141.476 C 77.9258,141.844 78.9528,142.027 80.0388,142.027 C 80.2458,142.027 80.4488,142.019 80.6598,142.008 C 85.2928,141.715 88.7808,138.512 91.1528,132.406 C 93.5038,126.355 94.6638,114.492 94.6638,96.7886 C 94.6638,80.8976 93.5158,69.9726 91.1798,63.9756 C 88.8438,57.9486 85.3478,54.6946 80.6598,54.2846 C 80.3008,54.2536 79.9458,54.2336 79.6018,54.2336 C 78.5118,54.2336 77.4848,54.3936 76.5198,54.7146 L 76.5198,54.7146 L 76.5158,54.7146 C 80.1168,55.8356 82.8948,58.9296 84.8518,63.9756 z M 82.5078,178.253 C 82.3948,178.203 82.2808,178.148 82.1718,178.093 C 82.1598,178.089 82.1488,178.081 82.1368,178.078 C 82.0348,178.027 81.9298,177.972 81.8278,177.921 C 81.8088,177.91 81.7888,177.902 81.7698,177.89 C 81.6798,177.839 81.5858,177.792 81.4918,177.742 C 81.4648,177.726 81.4378,177.706 81.4058,177.691 C 81.3238,177.648 81.2418,177.601 81.1638,177.554 C 81.1248,177.531 81.0858,177.507 81.0508,177.484 C 80.9808,177.445 80.9058,177.402 80.8358,177.359 C 80.7888,177.328 80.7418,177.3 80.6958,177.269 C 80.6368,177.23 80.5778,177.195 80.5198,177.156 C 80.4608,177.117 80.4058,177.081 80.3518,177.042 C 80.3008,177.011 80.2498,176.976 80.2028,176.945 C 80.1368,176.898 80.0708,176.851 80.0078,176.808 C 79.9688,176.781 79.9298,176.753 79.8948,176.726 C 79.8168,176.671 79.7418,176.613 79.6638,176.554 C 79.6408,176.538 79.6138,176.519 79.5858,176.499 C 79.4878,176.421 79.3868,176.343 79.2888,176.265 C 75.0818,172.886 71.9808,166.371 69.9918,156.73 C 60.8555,154.785 53.7344,148.976 48.8008,139.226 C 43.7969,129.324 41.25,114.836 41.25,95.8866 C 41.25,75.4566 44.7344,60.3786 51.5938,50.8156 C 57.3828,42.7456 65.4568,38.7766 75.6168,38.7766 C 75.6528,38.7766 69.2658,38.7766 69.2658,38.7766 L 69.2658,38.7766 C 59.1172,38.7846 51.0508,42.7536 45.2656,50.8156 C 38.4102,60.3786 34.9219,75.4566 34.9219,95.8866 C 34.9219,114.836 37.4688,129.324 42.4727,139.226 C 47.4063,148.976 54.5274,154.785 63.6638,156.73 C 65.6528,166.371 68.7538,172.886 72.9608,176.265 C 76.1368,178.824 80.3638,180.089 85.5858,180.089 C 85.6838,180.089 85.7848,180.089 85.8828,180.085 L 91.4218,180.085 C 88.0158,180.035 85.0388,179.425 82.5158,178.257 C 82.5158,178.257 82.5118,178.257 82.5078,178.253 z" style="fill:#006225;fill-rule:evenodd;stroke:none"/>
-</g>
-</g>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ height="44px"
+ version="1.1"
+ viewBox="0 0 44 44"
+ width="44px"
+ x="0px"
+ y="0px"
+ id="svg2"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="qt.svg">
+ <metadata
+ id="metadata18">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs16">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 22 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="44 : 22 : 1"
+ inkscape:persp3d-origin="22 : 14.666667 : 1"
+ id="perspective2836" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1020"
+ id="namedview14"
+ showgrid="false"
+ inkscape:zoom="21.454545"
+ inkscape:cx="49.412871"
+ inkscape:cy="21.894358"
+ inkscape:window-x="-4"
+ inkscape:window-y="-4"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3" />
+ <g
+ transform="matrix(0.18308778,0,0,0.18308778,6.6100946,3.2385199)"
+ id="g3">
+ <path
+ d="M 43.09,0.3586 C 40.94,0.0036 38.84,-0.0824 36.81,0.0776 31.968136,0.39505671 27.122677,0.73638425 22.28,1.0696 9.62,2.0816 0,12.4996 0,26.8896 l 0,169.7 14.19,13.2 28.87,-209.42 0.03,-0.011 z"
+ style="fill:#006225"
+ id="path5"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ d="m 174.4,160 c 0,12.5 -7.75,24.07 -17.57,25.77 L 14.23,209.73 V 25.93 C 14.23,9.21 27.57,-2.27 43.12,0.3 l 131.3,21.52 v 138.2 z"
+ style="fill:#80c342"
+ id="path7" />
+ <path
+ d="m 154.9,80.96 -12.96,-0.598 0,0.278 6.945,0.32 6.016,0 z"
+ style="fill:#006225"
+ id="path11" />
+ <path
+ d="m 144.6,135.6 c 0.66,0.328 1.43,0.476 2.351,0.476 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 h -6.015 c -1.821,0.832 -3.532,1.457 -5.176,1.848 z"
+ style="fill:#006225"
+ id="path13" />
+ <path
+ id="path17"
+ style="fill:#ffffff"
+ d="m 91.15,132.4 c 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -4.34,0 -7.68,2.535 -10.01,7.625 -2.52,5.543 -3.793,17.04 -3.793,34.44 0,16.82 1.238,28.75 3.734,35.75 2.356,6.672 5.879,9.976 10.5,9.976 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 m 17.98,3.75 c -4.117,9.707 -10.39,16.06 -18.99,19 0.867,4.449 2.176,7.441 3.922,9.019 1.351,1.211 3.433,1.821 6.222,1.821 0.805,0 1.668,-0.055 2.59,-0.157 v 13.12 l -5.961,0.782 c -1.758,0.23 -3.426,0.343 -5.004,0.343 -5.218,0 -9.445,-1.265 -12.62,-3.824 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 1.629,0 3.309,0.102 5.043,0.305 11.95,1.375 20.62,7.016 26.26,16.79 5.535,9.562 8.254,23.27 8.254,41.26 0,16.48 -2,29.45 -6.043,39.02 z M 130.4,45.91 l 11.52,1.238 0,20.21 12.96,0.914 0,12.68 -12.96,-0.598 0,46.33 c 0,4.032 0.445,6.625 1.34,7.789 0.8,1.067 2.046,1.594 3.71,1.594 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 v 11.65 c -5.136,2.258 -10.18,3.598 -15.12,4.02 -0.718,0.055 -1.41,0.086 -2.078,0.086 -4.48,0 -7.906,-1.301 -10.25,-3.934 -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.535 L 118.046,79.25 V 65.66 l 7.586,0.547 4.773,-20.3 z" />
+ <path
+ d="m 100.3,166 c 0.809,0 1.672,-0.055 2.59,-0.157 H 98.054 C 98.73,165.949 99.507,166 100.3,166 z"
+ style="fill:#006225"
+ id="path19" />
+ <path
+ id="path21"
+ style="fill:#006225"
+ d="m 84.85,63.98 c 2.336,5.997 3.484,16.92 3.484,32.81 0,17.7 -1.16,29.57 -3.512,35.62 -1.894,4.879 -4.527,7.902 -7.863,9.07 0.965,0.368 1.992,0.551 3.078,0.551 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -1.09,0 -2.117,0.16 -3.082,0.481 h -0.004 c 3.601,1.121 6.379,4.215 8.336,9.261 z m -2.344,114.3 c -0.113,-0.05 -0.227,-0.105 -0.336,-0.16 -0.012,-0.004 -0.023,-0.012 -0.035,-0.015 -0.102,-0.051 -0.207,-0.106 -0.309,-0.157 -0.019,-0.011 -0.039,-0.019 -0.058,-0.031 -0.09,-0.051 -0.184,-0.098 -0.278,-0.148 -0.027,-0.016 -0.054,-0.036 -0.086,-0.051 -0.082,-0.043 -0.164,-0.09 -0.242,-0.137 -0.039,-0.023 -0.078,-0.047 -0.113,-0.07 -0.07,-0.039 -0.145,-0.082 -0.215,-0.125 -0.047,-0.031 -0.094,-0.059 -0.14,-0.09 -0.059,-0.039 -0.118,-0.074 -0.176,-0.113 -0.059,-0.039 -0.114,-0.075 -0.168,-0.114 -0.051,-0.031 -0.102,-0.066 -0.149,-0.097 -0.066,-0.047 -0.132,-0.094 -0.195,-0.137 -0.039,-0.027 -0.078,-0.055 -0.113,-0.082 -0.078,-0.055 -0.153,-0.113 -0.231,-0.172 -0.023,-0.016 -0.05,-0.035 -0.078,-0.055 -0.098,-0.078 -0.199,-0.156 -0.297,-0.234 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 h -6.351 c -10.15,0.008 -18.22,3.977 -24,12.04 -6.855,9.563 -10.34,24.64 -10.34,45.07 0,18.95 2.547,33.44 7.551,43.34 4.934,9.75 12.05,15.56 21.19,17.5 1.989,9.641 5.09,16.16 9.297,19.54 3.176,2.559 7.403,3.824 12.62,3.824 0.098,0 0.199,0 0.297,-0.004 h 5.539 c -3.406,-0.05 -6.383,-0.66 -8.906,-1.828 L 82.498,178.28 z M 128.4,145.6 c -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.57 l -6.226,-0.285 v -13.59 h -6.016 v 3.035 c 0.871,3.273 1.555,6.82 2.063,10.64 l 4.164,0.192 v 51.36 c 0,6.723 1.367,11.62 4.09,14.67 2.343,2.633 5.765,3.934 10.25,3.934 h 6.015 c -4.48,0 -7.906,-1.301 -10.25,-3.934 z m 2.043,-99.66 -6.016,0 -4.668,19.88 5.911,0.422 4.773,-20.3 z" />
+ </g>
</svg>
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index 90c362b..d751134 100644
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -11,21 +11,24 @@ symbian: {
isEmpty(QT_LIBINFIX) {
TARGET.UID3 = 0x2001E61C
-
- # sqlite3 is expected to be already found on phone if infixed configuration is built.
- BLD_INF_RULES.prj_exports += \
- "sqlite3.sis $${EPOCROOT}epoc32/data/qt/sis/sqlite3.sis" \
- "sqlite3_selfsigned.sis $${EPOCROOT}epoc32/data/qt/sis/sqlite3_selfsigned.sis"
- symbian-abld|symbian-sbsv2 {
- sqlitedeployment = \
- "; Deploy sqlite onto phone that does not have it already" \
- "@\"$${EPOCROOT}epoc32/data/qt/sis/sqlite3.sis\", (0x2002af5f)"
- } else {
- sqlitedeployment = \
- "; Deploy sqlite onto phone that does not have it already" \
- "@\"$${PWD}/sqlite3.sis\", (0x2002af5f)"
+
+ # Sqlite3 is expected to be already found on phone if infixed configuration is built.
+ # It is also expected that devices newer than those based on S60 5.0 all have sqlite3.dll.
+ contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
+ BLD_INF_RULES.prj_exports += \
+ "sqlite3.sis $${EPOCROOT}epoc32/data/qt/sis/sqlite3.sis" \
+ "sqlite3_selfsigned.sis $${EPOCROOT}epoc32/data/qt/sis/sqlite3_selfsigned.sis"
+ symbian-abld|symbian-sbsv2 {
+ sqlitedeployment = \
+ "; Deploy sqlite onto phone that does not have it already" \
+ "@\"$${EPOCROOT}epoc32/data/qt/sis/sqlite3.sis\", (0x2002af5f)"
+ } else {
+ sqlitedeployment = \
+ "; Deploy sqlite onto phone that does not have it already" \
+ "@\"$${PWD}/sqlite3.sis\", (0x2002af5f)"
+ }
+ qtlibraries.pkg_postrules += sqlitedeployment
}
- qtlibraries.pkg_postrules += sqlitedeployment
} else {
# Always use experimental UID for infixed configuration to avoid UID clash
TARGET.UID3 = 0xE001E61C
@@ -81,12 +84,16 @@ symbian: {
qtlibraries.pkg_prerules = vendorinfo
qtlibraries.pkg_prerules += "; Dependencies of Qt libraries"
- qtlibraries.pkg_prerules += "(0x20013851), 1, 5, 1, {\"PIPS Installer\"}"
- contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
- qtlibraries.pkg_prerules += "(0x200110CB), 1, 5, 1, {\"Open C LIBSSL Common\"}"
- }
- contains(CONFIG, stl) {
- qtlibraries.pkg_prerules += "(0x2000F866), 1, 0, 0, {\"Standard C++ Library Common\"}"
+
+ # It is expected that Symbian^3 and newer phones will have sufficiently new OpenC already installed
+ contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
+ qtlibraries.pkg_prerules += "(0x20013851), 1, 5, 1, {\"PIPS Installer\"}"
+ contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
+ qtlibraries.pkg_prerules += "(0x200110CB), 1, 5, 1, {\"Open C LIBSSL Common\"}"
+ }
+ contains(CONFIG, stl) {
+ qtlibraries.pkg_prerules += "(0x2000F866), 1, 0, 0, {\"Standard C++ Library Common\"}"
+ }
}
qtlibraries.pkg_prerules += "(0x2002af5f), 0, 5, 0, {\"sqlite3\"}"
@@ -143,12 +150,39 @@ symbian: {
contains(QT_CONFIG, declarative): {
qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtDeclarative$${QT_LIBINFIX}.dll
+
+ folderlistmodelImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll
+ gesturesImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/gestures/qmlgesturesplugin$${QT_LIBINFIX}.dll
+ particlesImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/particles/qmlparticlesplugin$${QT_LIBINFIX}.dll
+
+ folderlistmodelImport.sources += $$QT_SOURCE_TREE/src/imports/folderlistmodel/qmldir
+ gesturesImport.sources += $$QT_SOURCE_TREE/src/imports/gestures/qmldir
+ particlesImport.sources += $$QT_SOURCE_TREE/src/imports/particles/qmldir
+
+ folderlistmodelImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/folderlistmodel
+ gesturesImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/gestures
+ particlesImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/particles
+
+ DEPLOYMENT += folderlistmodelImport gesturesImport particlesImport
+
+ contains(QT_CONFIG, webkit): {
+ webkitImport.sources = $$QT_BUILD_TREE/imports/org/webkit/qmlwebkitplugin$${QT_LIBINFIX}.dll
+ webkitImport.sources += $$QT_SOURCE_TREE/src/imports/webkit/qmldir
+ webkitImport.path = c:$$QT_IMPORTS_BASE_DIR/org/webkit
+ DEPLOYMENT += webkitImport
+ }
}
graphicssystems_plugins.path = c:$$QT_PLUGINS_BASE_DIR/graphicssystems
contains(QT_CONFIG, openvg) {
qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtOpenVG$${QT_LIBINFIX}.dll
graphicssystems_plugins.sources += $$QT_BUILD_TREE/plugins/graphicssystems/qvggraphicssystem$${QT_LIBINFIX}.dll
+ # OpenVG requires Symbian^3 or later
+ pkg_platform_dependencies -= \
+ "[0x101F7961],0,0,0,{\"S60ProductID\"}" \
+ "[0x102032BE],0,0,0,{\"S60ProductID\"}" \
+ "[0x102752AE],0,0,0,{\"S60ProductID\"}" \
+ "[0x1028315F],0,0,0,{\"S60ProductID\"}"
}
contains(QT_CONFIG, multimedia){
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 86915bb..f02ea52 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -1525,7 +1525,7 @@ void QScriptEnginePrivate::detachAllRegisteredScriptStrings()
#ifndef QT_NO_REGEXP
-Q_DECL_IMPORT extern QString qt_regexp_toCanonical(const QString &, QRegExp::PatternSyntax);
+Q_CORE_EXPORT QString qt_regexp_toCanonical(const QString &, QRegExp::PatternSyntax);
JSC::JSValue QScriptEnginePrivate::newRegExp(JSC::ExecState *exec, const QRegExp &regexp)
{
@@ -2020,8 +2020,6 @@ QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionSignature fun,
#ifndef QT_NO_REGEXP
-Q_DECL_IMPORT extern QString qt_regexp_toCanonical(const QString &, QRegExp::PatternSyntax);
-
/*!
Creates a QtScript object of class RegExp with the given
\a regexp.
diff --git a/src/script/parser/qscriptlexer.cpp b/src/script/parser/qscriptlexer.cpp
index ca64776..3ddc3aa 100644
--- a/src/script/parser/qscriptlexer.cpp
+++ b/src/script/parser/qscriptlexer.cpp
@@ -31,7 +31,7 @@
QT_BEGIN_NAMESPACE
-Q_DECL_IMPORT extern double qstrtod(const char *s00, char const **se, bool *ok);
+Q_CORE_EXPORT double qstrtod(const char *s00, char const **se, bool *ok);
#define shiftWindowsLineBreak() \
do { \
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index 6fd1725..9a35ac5 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -259,14 +259,14 @@ static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode
static QString qODBCWarn(const QODBCPrivate* odbc, int *nativeCode = 0)
{
- return (qWarnODBCHandle(SQL_HANDLE_ENV, odbc->dpEnv()) + QLatin1Char(' ')
+ return QString(qWarnODBCHandle(SQL_HANDLE_ENV, odbc->dpEnv()) + QLatin1Char(' ')
+ qWarnODBCHandle(SQL_HANDLE_DBC, odbc->dpDbc()) + QLatin1Char(' ')
+ qWarnODBCHandle(SQL_HANDLE_STMT, odbc->hStmt, nativeCode)).simplified();
}
static QString qODBCWarn(const QODBCDriverPrivate* odbc, int *nativeCode = 0)
{
- return (qWarnODBCHandle(SQL_HANDLE_ENV, odbc->hEnv) + QLatin1Char(' ')
+ return QString(qWarnODBCHandle(SQL_HANDLE_ENV, odbc->hEnv) + QLatin1Char(' ')
+ qWarnODBCHandle(SQL_HANDLE_DBC, odbc->hDbc, nativeCode)).simplified();
}
diff --git a/src/src.pro b/src/src.pro
index 5436c4a..3ac69be 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -84,7 +84,7 @@ src_declarative.subdir = $$QT_SOURCE_TREE/src/declarative
src_declarative.target = sub-declarative
#CONFIG += ordered
-!wince*:!ordered {
+!wince*:!ordered:!symbian-abld:!symbian-sbsv2 {
src_corelib.depends = src_tools_moc src_tools_rcc
src_gui.depends = src_corelib src_tools_uic
embedded: src_gui.depends += src_network
diff --git a/src/svg/qgraphicssvgitem.cpp b/src/svg/qgraphicssvgitem.cpp
index 69ff7a3..e035e1d 100644
--- a/src/svg/qgraphicssvgitem.cpp
+++ b/src/svg/qgraphicssvgitem.cpp
@@ -124,8 +124,10 @@ public:
\snippet doc/src/snippets/code/src_svg_qgraphicssvgitem.cpp 0
- Size of the item can be set via the setSize() method or via
- direct manipulation of the items transformation matrix.
+ Size of the item can be set via the \l{QRectF::setSize()}
+ {setSize()} method of the \l{QGraphicsSvgItem::boundingRect()}
+ {bounding rectangle} or via direct manipulation of the items
+ transformation matrix.
By default the SVG rendering is cached using QGraphicsItem::DeviceCoordinateCache
mode to speedup the display of items. Caching can be disabled by passing
diff --git a/src/xmlpatterns/data/qdecimal_p.h b/src/xmlpatterns/data/qdecimal_p.h
index d17b647..2a5e0b3 100644
--- a/src/xmlpatterns/data/qdecimal_p.h
+++ b/src/xmlpatterns/data/qdecimal_p.h
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
/**
* Defined in QtCore's qlocale.cpp.
*/
-Q_DECL_IMPORT extern char *qdtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve, char **resultp);
+Q_CORE_EXPORT char *qdtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve, char **resultp);
namespace QPatternist
{
diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro
index 484fbef..3d2dbf0 100644
--- a/tests/auto/declarative/declarative.pro
+++ b/tests/auto/declarative/declarative.pro
@@ -1,12 +1,12 @@
TEMPLATE = subdirs
!symbian: {
SUBDIRS += \
- examples \
qdeclarativemetatype \
qmetaobjectbuilder
}
SUBDIRS += \
+ examples \
parserstress \
qdeclarativeanchors \
qdeclarativeanimatedimage \
diff --git a/tests/auto/declarative/examples/examples.pro b/tests/auto/declarative/examples/examples.pro
index 92a16f1..2e243b4 100644
--- a/tests/auto/declarative/examples/examples.pro
+++ b/tests/auto/declarative/examples/examples.pro
@@ -7,9 +7,8 @@ SOURCES += tst_examples.cpp
include(../../../../tools/qml/qml.pri)
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp
index 605345e..cff0b46 100644
--- a/tests/auto/declarative/examples/tst_examples.cpp
+++ b/tests/auto/declarative/examples/tst_examples.cpp
@@ -47,6 +47,11 @@
#include <QDeclarativeView>
#include <QDeclarativeError>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_examples : public QObject
{
Q_OBJECT
@@ -80,6 +85,7 @@ tst_examples::tst_examples()
// Add directories you want excluded here
+ excludedDirs << "doc/src/snippets/declarative/visualdatamodel_rootindex";
#ifdef QT_NO_WEBKIT
excludedDirs << "examples/declarative/modelviews/webview";
diff --git a/tests/auto/declarative/parserstress/parserstress.pro b/tests/auto/declarative/parserstress/parserstress.pro
index 3a675e4..bb1d69f 100644
--- a/tests/auto/declarative/parserstress/parserstress.pro
+++ b/tests/auto/declarative/parserstress/parserstress.pro
@@ -5,9 +5,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_parserstress.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = ..\\..\\qscriptjstestsuite\\tests
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/parserstress/tst_parserstress.cpp b/tests/auto/declarative/parserstress/tst_parserstress.cpp
index c86908b..522a63a 100644
--- a/tests/auto/declarative/parserstress/tst_parserstress.cpp
+++ b/tests/auto/declarative/parserstress/tst_parserstress.cpp
@@ -46,6 +46,11 @@
#include <QDir>
#include <QFile>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_parserstress : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro b/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro
index 452ad55..9798bb6 100644
--- a/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro
+++ b/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro
@@ -4,9 +4,8 @@ SOURCES += tst_qdeclarativeanchors.cpp
macx:CONFIG -= app_bundle
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp
index 22f7966..97b77d0 100644
--- a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp
+++ b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp
@@ -50,6 +50,11 @@
#include <QtDeclarative/private/qdeclarativeanchors_p_p.h>
#include <QtDeclarative/private/qdeclarativeitem_p.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
Q_DECLARE_METATYPE(QDeclarativeAnchors::Anchor)
Q_DECLARE_METATYPE(QDeclarativeAnchorLine::AnchorLine)
diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro b/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro
index 7213abd..0a2f0f2 100644
--- a/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro
+++ b/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro
@@ -5,9 +5,8 @@ SOURCES += tst_qdeclarativeanimatedimage.cpp ../shared/testhttpserver.cpp
macx:CONFIG -= app_bundle
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp b/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp
index 237a436..1001278 100644
--- a/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp
+++ b/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp
@@ -48,6 +48,11 @@
#include "../shared/testhttpserver.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
#define TRY_WAIT(expr) \
do { \
for (int ii = 0; ii < 6; ++ii) { \
diff --git a/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro b/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro
index f7ed371..ed47dca 100644
--- a/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro
+++ b/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro
@@ -4,9 +4,8 @@ SOURCES += tst_qdeclarativeanimations.cpp
macx:CONFIG -= app_bundle
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp
index ed7e506..5cf4c23 100644
--- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp
+++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp
@@ -48,6 +48,11 @@
#include <QVariantAnimation>
#include <QEasingCurve>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeanimations : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro b/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro
index 7137af1..cfb59ef 100644
--- a/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro
+++ b/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro
@@ -4,9 +4,8 @@ SOURCES += tst_qdeclarativebehaviors.cpp
macx:CONFIG -= app_bundle
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp
index 45e5304..70739fb 100644
--- a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp
+++ b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp
@@ -49,6 +49,11 @@
#include <private/qdeclarativeitem_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativebehaviors : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro b/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro
index 04535db..a7ba2a8 100644
--- a/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro
+++ b/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativebinding.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp
index 8ab7b0b..653b34a 100644
--- a/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp
+++ b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp
@@ -45,6 +45,11 @@
#include <private/qdeclarativerectangle_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativebinding : public QObject
{
diff --git a/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro b/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro
index 3aa2197..a21761b 100644
--- a/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro
+++ b/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativeborderimage.cpp ../shared/testhttpserver.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp b/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp
index 69b4a89..1b73cf7 100644
--- a/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp
+++ b/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp
@@ -54,6 +54,10 @@
#include "../shared/testhttpserver.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
#define SERVER_PORT 14446
#define SERVER_ADDR "http://127.0.0.1:14446"
diff --git a/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro b/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro
index 98c38ad..4124f94 100644
--- a/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro
+++ b/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro
@@ -5,9 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativecomponent.cpp
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp b/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp
index faa1c21..8a19b8b 100644
--- a/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp
+++ b/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp
@@ -45,6 +45,11 @@
#include <QtDeclarative/qdeclarativeengine.h>
#include <QtDeclarative/qdeclarativecomponent.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativecomponent : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro b/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro
index bbf8630..d06ce4f 100644
--- a/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro
+++ b/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeconnection.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp b/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp
index 00e97ca..d384372 100644
--- a/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp
+++ b/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp
@@ -46,6 +46,11 @@
#include "../../../shared/util.h"
#include <QtDeclarative/qdeclarativescriptstring.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeconnection : public QObject
{
diff --git a/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro b/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro
index 0e1a5b1..74bb78c 100644
--- a/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro
+++ b/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro
@@ -3,9 +3,7 @@ contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_qdeclarativecontext.cpp
macx:CONFIG -= app_bundle
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp
index 7f0e6c0..605cf8e 100644
--- a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp
+++ b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp
@@ -46,6 +46,11 @@
#include <QDeclarativeComponent>
#include <QDeclarativeExpression>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativecontext : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro b/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro
index 9f1e50c..415d4e2 100644
--- a/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro
+++ b/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro
@@ -5,9 +5,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativedom.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp
index 6c19566..13960b1 100644
--- a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp
+++ b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp
@@ -46,6 +46,11 @@
#include <QtCore/QDebug>
#include <QtCore/QFile>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativedom : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro b/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro
index c907be5..58cad34 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro
+++ b/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro
@@ -12,7 +12,13 @@ INCLUDEPATH += ../shared
# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage
# LIBS += -lgcov
-DEFINES += SRCDIR=\\\"$$PWD\\\"
+symbian: {
+ importFiles.sources = data
+ importFiles.path = .
+ DEPLOYMENT = importFiles
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+}
CONFIG += parallel_test
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index e75abac..16e7ec5 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -53,6 +53,11 @@
#include "testtypes.h"
#include "testhttpserver.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
/*
This test covers evaluation of ECMAScript expressions and bindings from within
QML. This does not include static QML language issues.
diff --git a/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro b/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro
index 23afd07..7119ad9 100644
--- a/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro
+++ b/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro
@@ -4,10 +4,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeengine.cpp
-# Define SRCDIR equal to test's source directory
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp b/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp
index 0aebea1..56ebd73 100644
--- a/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp
+++ b/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp
@@ -50,6 +50,11 @@
#include <QDeclarativeComponent>
#include <QDeclarativeNetworkAccessManagerFactory>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeengine : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro b/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro
index fae11f9..29b7149 100644
--- a/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro
+++ b/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro
@@ -3,9 +3,7 @@ contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_qdeclarativeerror.cpp
macx:CONFIG -= app_bundle
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativeerror/tst_qdeclarativeerror.cpp b/tests/auto/declarative/qdeclarativeerror/tst_qdeclarativeerror.cpp
index ba1ebae..0279953 100644
--- a/tests/auto/declarative/qdeclarativeerror/tst_qdeclarativeerror.cpp
+++ b/tests/auto/declarative/qdeclarativeerror/tst_qdeclarativeerror.cpp
@@ -43,6 +43,11 @@
#include <QDeclarativeError>
#include <QDebug>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeerror : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro b/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro
index 7a70109..be0ba6c 100644
--- a/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro
+++ b/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeflickable.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
index 2c6890e..2ba5574 100644
--- a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
+++ b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
@@ -46,6 +46,11 @@
#include <private/qdeclarativevaluetype_p.h>
#include <math.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeflickable : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro b/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro
index 9b4fbc9..759e80b 100644
--- a/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro
+++ b/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeflipable.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp b/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp
index f32cdbd..f56c032 100644
--- a/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp
+++ b/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp
@@ -48,6 +48,11 @@
#include <private/qdeclarativerectangle_p.h>
#include <math.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeflipable : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
index c021fcf..24749c6 100644
--- a/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
+++ b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
@@ -4,9 +4,8 @@ SOURCES += tst_qdeclarativefocusscope.cpp
macx:CONFIG -= app_bundle
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
index 04bb1c5..7732e6d 100644
--- a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
+++ b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
@@ -48,6 +48,10 @@
#include <private/qdeclarativetext_p.h>
#include <QtDeclarative/private/qdeclarativefocusscope_p.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
class tst_qdeclarativefocusscope : public QObject
{
diff --git a/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro b/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro
index 487d0e1..91bf4a7 100644
--- a/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro
+++ b/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativefolderlistmodel.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativefolderlistmodel/tst_qdeclarativefolderlistmodel.cpp b/tests/auto/declarative/qdeclarativefolderlistmodel/tst_qdeclarativefolderlistmodel.cpp
index 3cf9613..b2e3a5b 100644
--- a/tests/auto/declarative/qdeclarativefolderlistmodel/tst_qdeclarativefolderlistmodel.cpp
+++ b/tests/auto/declarative/qdeclarativefolderlistmodel/tst_qdeclarativefolderlistmodel.cpp
@@ -48,6 +48,11 @@
#include <QtCore/qabstractitemmodel.h>
#include <QDebug>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
// From qdeclarastivefolderlistmodel.h
const int FileNameRole = Qt::UserRole+1;
const int FilePathRole = Qt::UserRole+2;
diff --git a/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro b/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro
index dbe0dcb..01dca26 100644
--- a/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro
+++ b/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativefontloader.cpp ../shared/testhttpserver.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp b/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp
index 36908d9..ae23017 100644
--- a/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp
+++ b/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp
@@ -47,6 +47,11 @@
#define SERVER_PORT 14448
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativefontloader : public QObject
{
diff --git a/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro b/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro
index 033e20e..a99a1b9 100644
--- a/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro
+++ b/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativegridview.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
index 2db3ee6..4e35bc0 100644
--- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
+++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
@@ -52,6 +52,11 @@
#include <QtDeclarative/private/qdeclarativelistmodel_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativeGridView : public QObject
{
Q_OBJECT
@@ -833,21 +838,34 @@ void tst_QDeclarativeGridView::componentChanges()
QSignalSpy highlightSpy(gridView, SIGNAL(highlightChanged()));
QSignalSpy delegateSpy(gridView, SIGNAL(delegateChanged()));
+ QSignalSpy headerSpy(gridView, SIGNAL(headerChanged()));
+ QSignalSpy footerSpy(gridView, SIGNAL(footerChanged()));
gridView->setHighlight(&component);
gridView->setDelegate(&delegateComponent);
+ gridView->setHeader(&component);
+ gridView->setFooter(&component);
QTRY_COMPARE(gridView->highlight(), &component);
QTRY_COMPARE(gridView->delegate(), &delegateComponent);
+ QTRY_COMPARE(gridView->header(), &component);
+ QTRY_COMPARE(gridView->footer(), &component);
QTRY_COMPARE(highlightSpy.count(),1);
QTRY_COMPARE(delegateSpy.count(),1);
+ QTRY_COMPARE(headerSpy.count(),1);
+ QTRY_COMPARE(footerSpy.count(),1);
gridView->setHighlight(&component);
gridView->setDelegate(&delegateComponent);
+ gridView->setHeader(&component);
+ gridView->setFooter(&component);
QTRY_COMPARE(highlightSpy.count(),1);
QTRY_COMPARE(delegateSpy.count(),1);
+ QTRY_COMPARE(headerSpy.count(),1);
+ QTRY_COMPARE(footerSpy.count(),1);
+
delete canvas;
}
@@ -1092,6 +1110,13 @@ void tst_QDeclarativeGridView::enforceRange()
gridview->setCurrentIndex(5);
QTRY_COMPARE(gridview->contentY(), 100.);
+ TestModel model2;
+ for (int i = 0; i < 5; i++)
+ model2.addItem("Item" + QString::number(i), "");
+
+ ctxt->setContextProperty("testModel", &model2);
+ QCOMPARE(gridview->count(), 5);
+
delete canvas;
}
diff --git a/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro b/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro
index a8b8eca..244a1e1 100644
--- a/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro
+++ b/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativeimage.cpp ../shared/testhttpserver.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
index 720702a..c09f7fc 100644
--- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
+++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
@@ -55,6 +55,10 @@
#include "../shared/testhttpserver.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
#define SERVER_PORT 14451
#define SERVER_ADDR "http://127.0.0.1:14451"
diff --git a/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro b/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro
index 1b828a5..bdb6423 100644
--- a/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro
+++ b/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro
@@ -8,11 +8,9 @@ SOURCES += tst_qdeclarativeimageprovider.cpp
# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage
# LIBS += -lgcov
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp
index cc4ec20..4185790 100644
--- a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp
+++ b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp
@@ -45,6 +45,11 @@
#include <private/qdeclarativeimage_p.h>
#include <QImageReader>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
// QDeclarativeImageProvider::request() is run in an idle thread where possible
// Be generous in our timeout.
#define TRY_WAIT(expr) \
diff --git a/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro b/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro
index c6719c0..2c20e7e 100644
--- a/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro
+++ b/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro
@@ -5,9 +5,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeinfo.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeinfo/tst_qdeclarativeinfo.cpp b/tests/auto/declarative/qdeclarativeinfo/tst_qdeclarativeinfo.cpp
index 36db448..03df71f 100644
--- a/tests/auto/declarative/qdeclarativeinfo/tst_qdeclarativeinfo.cpp
+++ b/tests/auto/declarative/qdeclarativeinfo/tst_qdeclarativeinfo.cpp
@@ -46,6 +46,11 @@
#include <QDeclarativeContext>
#include <qdeclarativeinfo.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeinfo : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro b/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro
index 350f6c6..c8a48c9 100644
--- a/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro
+++ b/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro
@@ -3,9 +3,7 @@ contains(QT_CONFIG,declarative): QT += declarative script
SOURCES += tst_qdeclarativeinstruction.cpp
macx:CONFIG -= app_bundle
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp
index 1e88255..d5a911a 100644
--- a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp
+++ b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp
@@ -42,6 +42,11 @@
#include <qtest.h>
#include <private/qdeclarativecompiler_p.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeinstruction : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeitem/data/childrenRectBug.qml b/tests/auto/declarative/qdeclarativeitem/data/childrenRectBug.qml
new file mode 100644
index 0000000..4a2f056
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeitem/data/childrenRectBug.qml
@@ -0,0 +1,23 @@
+import Qt 4.7
+
+Rectangle {
+ width: 400
+ height: 200
+
+ Item {
+ objectName: "theItem"
+ anchors.centerIn: parent
+ width: childrenRect.width
+ height: childrenRect.height
+ Rectangle {
+ id: text1
+ anchors.verticalCenter: parent.verticalCenter
+ width: 100; height: 100; color: "green"
+ }
+ Rectangle {
+ anchors.left: text1.right
+ anchors.verticalCenter: parent.verticalCenter
+ width: 100; height: 100; color: "green"
+ }
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro b/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro
index f494ef1..f4901c4 100644
--- a/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro
+++ b/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro
@@ -5,9 +5,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeitem.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
index ecc813e..0a66245 100644
--- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
+++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
@@ -47,6 +47,11 @@
#include <QtDeclarative/qdeclarativeitem.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativeItem : public QObject
{
@@ -67,6 +72,7 @@ private slots:
void transforms();
void transforms_data();
void childrenRect();
+ void childrenRectBug();
void childrenProperty();
void resourcesProperty();
@@ -731,6 +737,22 @@ void tst_QDeclarativeItem::childrenRect()
delete o;
}
+// QTBUG-11383
+void tst_QDeclarativeItem::childrenRectBug()
+{
+ QDeclarativeView *canvas = new QDeclarativeView(0);
+ canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/childrenRectBug.qml"));
+ canvas->show();
+
+ QGraphicsObject *o = canvas->rootObject();
+ QDeclarativeItem *item = o->findChild<QDeclarativeItem*>("theItem");
+ QCOMPARE(item->width(), qreal(200));
+ QCOMPARE(item->height(), qreal(100));
+ QCOMPARE(item->x(), qreal(100));
+
+ delete canvas;
+}
+
template<typename T>
T *tst_QDeclarativeItem::findItem(QGraphicsObject *parent, const QString &objectName)
{
diff --git a/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro b/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro
index 2b7eb1c..43c451f 100644
--- a/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro
+++ b/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro
@@ -12,9 +12,8 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += ../shared/testhttpserver.cpp
symbian: {
- DEFINES += SRCDIR=\".\"\"\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
index 011870c..413843a 100644
--- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
+++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
@@ -55,6 +55,11 @@
#include "../../../shared/util.h"
#include "testhttpserver.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
DEFINE_BOOL_CONFIG_OPTION(qmlCheckTypes, QML_CHECK_TYPES)
diff --git a/tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro b/tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro
index 79954fe..5076e51 100644
--- a/tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro
+++ b/tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro
@@ -4,12 +4,10 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativelayoutitem.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
-} \ No newline at end of file
+}
diff --git a/tests/auto/declarative/qdeclarativelayoutitem/tst_qdeclarativelayoutitem.cpp b/tests/auto/declarative/qdeclarativelayoutitem/tst_qdeclarativelayoutitem.cpp
index c0c5abc..bbdba74 100644
--- a/tests/auto/declarative/qdeclarativelayoutitem/tst_qdeclarativelayoutitem.cpp
+++ b/tests/auto/declarative/qdeclarativelayoutitem/tst_qdeclarativelayoutitem.cpp
@@ -49,6 +49,11 @@
#include <qgraphicslinearlayout.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativelayoutitem : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro b/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro
index 53bb9ec..e90db49 100644
--- a/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro
+++ b/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativelistmodel.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
index be4ffe8..b3b6c20 100644
--- a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
+++ b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
@@ -51,6 +51,11 @@
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativelistmodel : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro b/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro
index b406fde..2c5a859 100644
--- a/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro
+++ b/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativelistview.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
index 2aef9bb..cd42b63 100644
--- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
+++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
@@ -52,6 +52,11 @@
#include <QtDeclarative/private/qlistmodelinterface_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativeListView : public QObject
{
Q_OBJECT
@@ -802,6 +807,14 @@ void tst_QDeclarativeListView::enforceRange()
QTRY_COMPARE(listview->currentIndex(), 6);
+ // change model
+ TestModel model2;
+ for (int i = 0; i < 5; i++)
+ model2.addItem("Item" + QString::number(i), "");
+
+ ctxt->setContextProperty("testModel", &model2);
+ QCOMPARE(listview->count(), 5);
+
delete canvas;
}
diff --git a/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro b/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro
index 9334928..b07bf9e 100644
--- a/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro
+++ b/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro
@@ -8,9 +8,8 @@ SOURCES += tst_qdeclarativeloader.cpp \
../shared/testhttpserver.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp b/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp
index 11cc61b..d047a2a 100644
--- a/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp
+++ b/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp
@@ -50,6 +50,11 @@
#define SERVER_PORT 14450
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
inline QUrl TEST_FILE(const QString &filename)
{
return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename);
diff --git a/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro b/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro
index 0d32ab8..f13250e 100644
--- a/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro
+++ b/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro
@@ -3,9 +3,7 @@ contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_qdeclarativemetatype.cpp
macx:CONFIG -= app_bundle
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp
index 76e86c9..8964f8a 100644
--- a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp
+++ b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp
@@ -54,6 +54,11 @@
#include <private/qdeclarativemetatype_p.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativemetatype : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp
index 6d17acc..2081f0e 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp
@@ -56,6 +56,11 @@ private slots:
void importsPlugin();
};
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
#define VERIFY_ERRORS(errorfile) \
if (!errorfile) { \
if (qgetenv("DEBUG") != "" && !component.errors().isEmpty()) \
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
index 29a1009..fb3630f 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
@@ -2,10 +2,10 @@ load(qttest_p4)
SOURCES = tst_qdeclarativemoduleplugin.cpp
QT += declarative
CONFIG -= app_bundle
+
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro b/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
index 6f9c98c..3d39aa8 100644
--- a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
+++ b/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativemousearea.cpp ../shared/testhttpserver.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
index ff3bf45..5a10372 100644
--- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
+++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
@@ -46,6 +46,11 @@
#include <QtDeclarative/qdeclarativeview.h>
#include <QtDeclarative/qdeclarativecontext.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativeMouseArea: public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro b/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro
index 31172a9..f9ca90f 100644
--- a/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro
+++ b/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeparticles.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp b/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp
index 093190c..caf69fc 100644
--- a/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp
+++ b/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp
@@ -43,6 +43,11 @@
#include <qdeclarativeview.h>
#include <QGraphicsObject>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativeParticles : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro b/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro
index 6bef61c..04fd26b 100644
--- a/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro
+++ b/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativepathview.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp
index dffc7ac..bf1e13a 100644
--- a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp
+++ b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp
@@ -57,6 +57,11 @@
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativePathView : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro b/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro
index 99a94bc..3130364 100644
--- a/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro
+++ b/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro
@@ -10,9 +10,8 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += ../shared/testhttpserver.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp b/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp
index 0cc13ad..f1018b2 100644
--- a/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp
+++ b/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp
@@ -49,6 +49,11 @@
// These don't let normal people run tests!
//#include "../network-settings.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativepixmapcache : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro b/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro
index 2c5b473..5dc7bb8 100644
--- a/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro
+++ b/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro
@@ -3,11 +3,9 @@ contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_qdeclarativepositioners.cpp
macx:CONFIG -= app_bundle
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp
index e639014..62ec707 100644
--- a/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp
+++ b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp
@@ -48,6 +48,11 @@
#include <qdeclarativeexpression.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativePositioners : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
index f37d952..4121a33 100644
--- a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
+++ b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
@@ -5,9 +5,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeproperty.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
index 53614fe..0ca0e03 100644
--- a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
+++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
@@ -48,6 +48,11 @@
#include <QtCore/qfileinfo.h>
#include <QtCore/qdir.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
inline QUrl TEST_FILE(const QString &filename)
{
QFileInfo fileInfo(__FILE__);
diff --git a/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro b/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro
index b381a9b..6af6500 100644
--- a/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro
+++ b/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro
@@ -4,9 +4,8 @@ SOURCES += tst_qdeclarativeqt.cpp
macx:CONFIG -= app_bundle
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp
index 5095be8..06561fa 100644
--- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp
+++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp
@@ -51,6 +51,11 @@
#include <QCryptographicHash>
#include <QDeclarativeItem>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativeqt : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro b/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro
index 51667af..f3ff9ed 100644
--- a/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro
+++ b/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativerepeater.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp b/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp
index e6b2fdd..3cc68f4 100644
--- a/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp
+++ b/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp
@@ -48,6 +48,11 @@
#include <private/qdeclarativerepeater_p.h>
#include <private/qdeclarativetext_p.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
inline QUrl TEST_FILE(const QString &filename)
{
return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename);
diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
index 6b98f1e..872aeb9 100644
--- a/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
+++ b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativesmoothedanimation.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp b/tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp
index 7cf318a..d9164f6 100644
--- a/tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp
+++ b/tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp
@@ -46,6 +46,11 @@
#include <private/qdeclarativevaluetype_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativesmoothedanimation : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro b/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro
index eb7d793..dff4922 100644
--- a/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro
+++ b/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativesmoothedfollow.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp b/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp
index ac750d9..b9ac23f 100644
--- a/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp
+++ b/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp
@@ -48,6 +48,11 @@
#include <private/qdeclarativevaluetype_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativesmoothedfollow : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro b/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro
index 6ed8924..1c17ba0 100644
--- a/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro
+++ b/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativespringfollow.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp b/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp
index 8a07d6b..e0e2892 100644
--- a/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp
+++ b/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp
@@ -45,6 +45,11 @@
#include <private/qdeclarativevaluetype_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativespringfollow : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro
index 9cdb884..1462c9a 100644
--- a/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro
+++ b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativesqldatabase.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp b/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp
index 7486a4b..f92d7e8 100644
--- a/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp
+++ b/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp
@@ -53,6 +53,11 @@
#include <QtCore/qdir.h>
#include <QtCore/qfile.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativesqldatabase : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativestates/data/attachedPropertyChanges.qml b/tests/auto/declarative/qdeclarativestates/data/attachedPropertyChanges.qml
new file mode 100644
index 0000000..e17823b
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativestates/data/attachedPropertyChanges.qml
@@ -0,0 +1,20 @@
+import Qt.test 1.0
+import Qt 4.7
+
+Item {
+ id: item
+ width: 100; height: 100
+ MyRectangle.foo: 0
+
+ states: State {
+ name: "foo1"
+ PropertyChanges {
+ target: item
+ MyRectangle.foo: 1
+ width: 50
+ }
+ }
+
+ Component.onCompleted: item.state = "foo1"
+}
+
diff --git a/tests/auto/declarative/qdeclarativestates/data/returnToBase.qml b/tests/auto/declarative/qdeclarativestates/data/returnToBase.qml
new file mode 100644
index 0000000..e342331
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativestates/data/returnToBase.qml
@@ -0,0 +1,21 @@
+import Qt 4.7
+
+Rectangle {
+ id: theRect
+ property bool triggerState: false
+ property string stateString: ""
+ states: [ State {
+ when: triggerState
+ PropertyChanges {
+ target: theRect
+ stateString: "inState"
+ }
+ },
+ State {
+ name: ""
+ PropertyChanges {
+ target: theRect
+ stateString: "originalState"
+ }
+ }]
+}
diff --git a/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro b/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro
index 6f4ecb3..2bae041 100644
--- a/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro
+++ b/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativestates.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
index ea074a4..2913ddd 100644
--- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
+++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
@@ -49,6 +49,24 @@
#include <private/qdeclarativestategroup_p.h>
#include <private/qdeclarativeitem_p.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
+class MyAttached : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int foo READ foo WRITE setFoo)
+public:
+ MyAttached(QObject *parent) : QObject(parent), m_foo(13) {}
+
+ int foo() const { return m_foo; }
+ void setFoo(int f) { m_foo = f; }
+
+private:
+ int m_foo;
+};
class MyRect : public QDeclarativeRectangle
{
@@ -61,6 +79,10 @@ public:
int propertyWithNotify() const { return m_prop; }
void setPropertyWithNotify(int i) { m_prop = i; emit oddlyNamedNotifySignal(); }
+
+ static MyAttached *qmlAttachedProperties(QObject *o) {
+ return new MyAttached(o);
+ }
Q_SIGNALS:
void didSomething();
void oddlyNamedNotifySignal();
@@ -69,6 +91,8 @@ private:
int m_prop;
};
+QML_DECLARE_TYPE(MyRect)
+QML_DECLARE_TYPEINFO(MyRect, QML_HAS_ATTACHED_PROPERTIES)
class tst_qdeclarativestates : public QObject
{
@@ -83,6 +107,7 @@ private slots:
void initTestCase();
void basicChanges();
+ void attachedPropertyChanges();
void basicExtension();
void basicBinding();
void signalOverride();
@@ -112,6 +137,7 @@ private slots:
void whenOrdering();
void urlResolution();
void unnamedWhen();
+ void returnToBase();
};
void tst_qdeclarativestates::initTestCase()
@@ -219,6 +245,28 @@ void tst_qdeclarativestates::basicChanges()
}
}
+void tst_qdeclarativestates::attachedPropertyChanges()
+{
+ QDeclarativeEngine engine;
+
+ QDeclarativeComponent component(&engine, SRCDIR "/data/attachedPropertyChanges.qml");
+ QVERIFY(component.isReady());
+
+ QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(component.create());
+ QVERIFY(item != 0);
+ QCOMPARE(item->width(), 50.0);
+
+ // Ensure attached property has been changed
+ QObject *attObj = qmlAttachedPropertiesObject<MyRect>(item, false);
+ QVERIFY(attObj);
+
+ MyAttached *att = qobject_cast<MyAttached*>(attObj);
+ QVERIFY(att);
+
+ QEXPECT_FAIL("", "QTBUG-11283", Abort);
+ QCOMPARE(att->foo(), 1);
+}
+
void tst_qdeclarativestates::basicExtension()
{
QDeclarativeEngine engine;
@@ -1085,6 +1133,26 @@ void tst_qdeclarativestates::unnamedWhen()
QCOMPARE(rect->property("stateString").toString(), QLatin1String(""));
}
+void tst_qdeclarativestates::returnToBase()
+{
+ QDeclarativeEngine engine;
+
+ QDeclarativeComponent c(&engine, SRCDIR "/data/returnToBase.qml");
+ QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create());
+ QVERIFY(rect != 0);
+ QDeclarativeItemPrivate *rectPrivate = QDeclarativeItemPrivate::get(rect);
+
+ QCOMPARE(rectPrivate->state(), QLatin1String(""));
+ QCOMPARE(rect->property("stateString").toString(), QLatin1String(""));
+ rect->setProperty("triggerState", true);
+ QCOMPARE(rectPrivate->state(), QLatin1String("anonymousState1"));
+ QCOMPARE(rect->property("stateString").toString(), QLatin1String("inState"));
+ rect->setProperty("triggerState", false);
+ QCOMPARE(rectPrivate->state(), QLatin1String(""));
+ QCOMPARE(rect->property("stateString").toString(), QLatin1String("originalState"));
+}
+
+
QTEST_MAIN(tst_qdeclarativestates)
#include "tst_qdeclarativestates.moc"
diff --git a/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro b/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro
index 786bc1b..0062688 100644
--- a/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro
+++ b/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro
@@ -4,10 +4,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativesystempalette.cpp
-# Define SRCDIR equal to test's source directory
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp b/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp
index 7927d97..dd1fd7a 100644
--- a/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp
+++ b/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp
@@ -47,6 +47,11 @@
#include <qpalette.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativesystempalette : public QObject
{
diff --git a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro
index 51c7f43..c1a36fd 100644
--- a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro
+++ b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro
@@ -10,9 +10,8 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += ../shared/testhttpserver.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp
index 551e17b..01120b1 100644
--- a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp
+++ b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp
@@ -51,6 +51,11 @@
#include "../../../shared/util.h"
#include "testhttpserver.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativetext : public QObject
{
diff --git a/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro b/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro
index 2adb2b8..4b6bd49 100644
--- a/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro
+++ b/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativetextedit.cpp ../shared/testhttpserver.cpp
HEADERS += ../shared/testhttpserver.h
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
index 47c5b63..f7ba7a1 100644
--- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
+++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
@@ -50,11 +50,17 @@
#include <QtDeclarative/qdeclarativeexpression.h>
#include <QtDeclarative/qdeclarativecomponent.h>
#include <private/qdeclarativetextedit_p.h>
+#include <private/qdeclarativetextedit_p_p.h>
#include <QFontMetrics>
#include <QDeclarativeView>
#include <QStyle>
#include <QInputContext>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativetextedit : public QObject
{
@@ -86,7 +92,8 @@ private slots:
void delegateLoading();
void navigation();
void readOnly();
- void sendRequestSoftwareInputPanelEvent();
+ void openInputPanelOnClick();
+ void openInputPanelOnFocus();
void geometrySignals();
private:
void simulateKey(QDeclarativeView *, int key);
@@ -817,14 +824,62 @@ public:
bool closeInputPanelReceived;
};
-void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
+void tst_qdeclarativetextedit::openInputPanelOnClick()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ MyInputContext ic;
+ view.setInputContext(&ic);
+ QDeclarativeTextEdit edit;
+ QSignalSpy focusOnPressSpy(&edit, SIGNAL(focusOnPressChanged(bool)));
+ edit.setText("Hello world");
+ edit.setPos(0, 0);
+ scene.addItem(&edit);
+ view.show();
+ qApp->setAutoSipEnabled(true);
+ QApplication::setActiveWindow(&view);
+ QTest::qWaitForWindowShown(&view);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
+
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&edit);
+ QDeclarativeTextEditPrivate *editPrivate = static_cast<QDeclarativeTextEditPrivate*>(pri);
+
+ // input panel on click
+ editPrivate->showInputPanelOnFocus = false;
+
+ QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel(
+ view.style()->styleHint(QStyle::SH_RequestSoftwareInputPanel));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
+ QApplication::processEvents();
+ if (behavior == QStyle::RSIP_OnMouseClickAndAlreadyFocused) {
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
+ QApplication::processEvents();
+ QCOMPARE(ic.openInputPanelReceived, true);
+ } else if (behavior == QStyle::RSIP_OnMouseClick) {
+ QCOMPARE(ic.openInputPanelReceived, true);
+ }
+ ic.openInputPanelReceived = false;
+
+ // focus should not cause input panels to open or close
+ edit.setFocus(false);
+ edit.setFocus(true);
+ edit.setFocus(false);
+ edit.setFocus(true);
+ edit.setFocus(false);
+ QApplication::processEvents();
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QCOMPARE(ic.closeInputPanelReceived, false);
+}
+
+void tst_qdeclarativetextedit::openInputPanelOnFocus()
{
QGraphicsScene scene;
QGraphicsView view(&scene);
MyInputContext ic;
view.setInputContext(&ic);
QDeclarativeTextEdit edit;
- QSignalSpy inputPanelonFocusSpy(&edit, SIGNAL(showInputPanelOnFocusChanged(bool)));
+ QSignalSpy focusOnPressSpy(&edit, SIGNAL(focusOnPressChanged(bool)));
edit.setText("Hello world");
edit.setPos(0, 0);
scene.addItem(&edit);
@@ -834,7 +889,12 @@ void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
- QVERIFY(edit.showInputPanelOnFocus());
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&edit);
+ QDeclarativeTextEditPrivate *editPrivate = static_cast<QDeclarativeTextEditPrivate*>(pri);
+ editPrivate->showInputPanelOnFocus = true;
+
+ // test default values
+ QVERIFY(edit.focusOnPress());
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
@@ -843,76 +903,94 @@ void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
QApplication::processEvents();
QVERIFY(edit.hasFocus());
QCOMPARE(ic.openInputPanelReceived, true);
- QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
// no events on release
QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
- // Even with focus already gained, user needs
- // to be able to open panel by pressing on the editor
+ // if already focused, input panel can be opened on press
+ QVERIFY(edit.hasFocus());
QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, true);
- QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
- // input panel closed on focus lost
- edit.setFocus(false);
+ // input method should stay enabled if focus
+ // is lost to an item that also accepts inputs
+ QDeclarativeTextEdit anotherEdit;
+ scene.addItem(&anotherEdit);
+ anotherEdit.setFocus(true);
+ QApplication::processEvents();
+ QCOMPARE(ic.openInputPanelReceived, true);
+ ic.openInputPanelReceived = false;
+ QCOMPARE(view.inputContext(), &ic);
+ QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // input method should be disabled if focus
+ // is lost to an item that doesn't accept inputs
+ QDeclarativeItem item;
+ scene.addItem(&item);
+ item.setFocus(true);
QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, true);
- ic.closeInputPanelReceived = false;
-
- // no input panel events if showInputPanelOnFocus is false
- edit.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
- QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
- QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
+ QVERIFY(view.inputContext() == 0);
+ QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // no automatic input panel events should
+ // be sent if focusOnPress is false
+ edit.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
+ edit.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
edit.setFocus(false);
edit.setFocus(true);
+ QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
+ QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
+ QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
- edit.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
-
- // one show input panel event when openSoftwareInputPanel is called
+ // one show input panel event should
+ // be set when openSoftwareInputPanel is called
edit.openSoftwareInputPanel();
QCOMPARE(ic.openInputPanelReceived, true);
QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
- // one close input panel event when closeSoftwareInputPanel is called
+ // one close input panel event should
+ // be sent when closeSoftwareInputPanel is called
edit.closeSoftwareInputPanel();
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, true);
- ic.openInputPanelReceived = false;
-
- // set showInputPanelOnFocus back to true
- edit.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
- edit.setFocus(false);
- QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, true);
ic.closeInputPanelReceived = false;
- // active window focus reason should not cause input panel to open
- QGraphicsObject * editObject = qobject_cast<QGraphicsObject*>(&edit);
- editObject->setFocus(Qt::ActiveWindowFocusReason);
+ // set focusOnPress back to true
+ edit.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
+ edit.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
+ edit.setFocus(false);
+ QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
+ ic.closeInputPanelReceived = false;
- // and input panel should not open if focus has already been set
+ // input panel should not re-open
+ // if focus has already been set
+ edit.setFocus(true);
+ QCOMPARE(ic.openInputPanelReceived, true);
+ ic.openInputPanelReceived = false;
edit.setFocus(true);
QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, false);
- edit.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
+ // input method should be disabled
+ // if TextEdit loses focus
+ edit.setFocus(false);
+ QApplication::processEvents();
+ QVERIFY(view.inputContext() == 0);
+ QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
}
void tst_qdeclarativetextedit::geometrySignals()
diff --git a/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro b/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro
index 2953567..8f42448 100644
--- a/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro
+++ b/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativetextinput.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
index c943c89..3143580 100644
--- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
+++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
@@ -45,10 +45,16 @@
#include <QFile>
#include <QtDeclarative/qdeclarativeview.h>
#include <private/qdeclarativetextinput_p.h>
+#include <private/qdeclarativetextinput_p_p.h>
#include <QDebug>
#include <QStyle>
#include <QInputContext>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativetextinput : public QObject
{
@@ -74,7 +80,8 @@ private slots:
void navigation();
void readOnly();
- void sendRequestSoftwareInputPanelEvent();
+ void openInputPanelOnClick();
+ void openInputPanelOnFocus();
void setHAlignClearCache();
void focusOutClearSelection();
@@ -763,14 +770,61 @@ public:
bool closeInputPanelReceived;
};
-void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
+void tst_qdeclarativetextinput::openInputPanelOnClick()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ MyInputContext ic;
+ view.setInputContext(&ic);
+ QDeclarativeTextInput input;
+ QSignalSpy focusOnPressSpy(&input, SIGNAL(focusOnPressChanged(bool)));
+ input.setText("Hello world");
+ input.setPos(0, 0);
+ scene.addItem(&input);
+ view.show();
+ qApp->setAutoSipEnabled(true);
+ QApplication::setActiveWindow(&view);
+ QTest::qWaitForWindowShown(&view);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
+
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&input);
+ QDeclarativeTextInputPrivate *inputPrivate = static_cast<QDeclarativeTextInputPrivate*>(pri);
+
+ // input panel on click
+ inputPrivate->showInputPanelOnFocus = false;
+
+ QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel(
+ view.style()->styleHint(QStyle::SH_RequestSoftwareInputPanel));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
+ QApplication::processEvents();
+ if (behavior == QStyle::RSIP_OnMouseClickAndAlreadyFocused) {
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
+ QApplication::processEvents();
+ QCOMPARE(ic.openInputPanelReceived, true);
+ } else if (behavior == QStyle::RSIP_OnMouseClick) {
+ QCOMPARE(ic.openInputPanelReceived, true);
+ }
+ ic.openInputPanelReceived = false;
+
+ // focus should not cause input panels to open or close
+ input.setFocus(false);
+ input.setFocus(true);
+ input.setFocus(false);
+ input.setFocus(true);
+ input.setFocus(false);
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QCOMPARE(ic.closeInputPanelReceived, false);
+}
+
+void tst_qdeclarativetextinput::openInputPanelOnFocus()
{
QGraphicsScene scene;
QGraphicsView view(&scene);
MyInputContext ic;
view.setInputContext(&ic);
QDeclarativeTextInput input;
- QSignalSpy inputPanelonFocusSpy(&input, SIGNAL(showInputPanelOnFocusChanged(bool)));
+ QSignalSpy focusOnPressSpy(&input, SIGNAL(focusOnPressChanged(bool)));
input.setText("Hello world");
input.setPos(0, 0);
scene.addItem(&input);
@@ -780,7 +834,12 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
- QVERIFY(input.showInputPanelOnFocus());
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&input);
+ QDeclarativeTextInputPrivate *inputPrivate = static_cast<QDeclarativeTextInputPrivate*>(pri);
+ inputPrivate->showInputPanelOnFocus = true;
+
+ // test default values
+ QVERIFY(input.focusOnPress());
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
@@ -789,76 +848,94 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
QApplication::processEvents();
QVERIFY(input.hasFocus());
QCOMPARE(ic.openInputPanelReceived, true);
- QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
// no events on release
QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
- // Even with focus already gained, user needs
- // to be able to open panel by pressing on the editor
+ // if already focused, input panel can be opened on press
+ QVERIFY(input.hasFocus());
QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, true);
- QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
- // input panel closed on focus lost
- input.setFocus(false);
+ // input method should stay enabled if focus
+ // is lost to an item that also accepts inputs
+ QDeclarativeTextInput anotherInput;
+ scene.addItem(&anotherInput);
+ anotherInput.setFocus(true);
+ QApplication::processEvents();
+ QCOMPARE(ic.openInputPanelReceived, true);
+ ic.openInputPanelReceived = false;
+ QCOMPARE(view.inputContext(), &ic);
+ QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // input method should be disabled if focus
+ // is lost to an item that doesn't accept inputs
+ QDeclarativeItem item;
+ scene.addItem(&item);
+ item.setFocus(true);
QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, true);
- ic.closeInputPanelReceived = false;
-
- // no input panel events if showInputPanelOnFocus is false
- input.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
- QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
- QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
+ QVERIFY(view.inputContext() == 0);
+ QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
+
+ // no automatic input panel events should
+ // be sent if focusOnPress is false
+ input.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
+ input.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
input.setFocus(false);
input.setFocus(true);
+ QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
+ QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
+ QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
- input.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
-
- // one show input panel event when openSoftwareInputPanel is called
+ // one show input panel event should
+ // be set when openSoftwareInputPanel is called
input.openSoftwareInputPanel();
QCOMPARE(ic.openInputPanelReceived, true);
QCOMPARE(ic.closeInputPanelReceived, false);
ic.openInputPanelReceived = false;
- // one close input panel event when closeSoftwareInputPanel is called
+ // one close input panel event should
+ // be sent when closeSoftwareInputPanel is called
input.closeSoftwareInputPanel();
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, true);
- ic.openInputPanelReceived = false;
-
- // set showInputPanelOnFocus back to true
- input.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
- input.setFocus(false);
- QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, true);
ic.closeInputPanelReceived = false;
- // active window focus reason should not cause input panel to open
- QGraphicsObject * inputObject = qobject_cast<QGraphicsObject*>(&input);
- inputObject->setFocus(Qt::ActiveWindowFocusReason);
+ // set focusOnPress back to true
+ input.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
+ input.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
+ input.setFocus(false);
+ QApplication::processEvents();
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
+ ic.closeInputPanelReceived = false;
- // and input panel should not open if focus has already been set
+ // input panel should not re-open
+ // if focus has already been set
+ input.setFocus(true);
+ QCOMPARE(ic.openInputPanelReceived, true);
+ ic.openInputPanelReceived = false;
input.setFocus(true);
QCOMPARE(ic.openInputPanelReceived, false);
- QCOMPARE(ic.closeInputPanelReceived, false);
- input.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
+ // input method should be disabled
+ // if TextEdit loses focus
+ input.setFocus(false);
+ QApplication::processEvents();
+ QVERIFY(view.inputContext() == 0);
+ QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
}
class MyTextInput : public QDeclarativeTextInput
diff --git a/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro b/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro
index d95165c..398139a 100644
--- a/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro
+++ b/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro
@@ -4,9 +4,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativetimer.cpp
-symbian: {
- DEFINES += SRCDIR=\".\"
-} else {
+!symbian: {
DEFINES += SRCDIR=\\\"$$PWD\\\"
}
diff --git a/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp b/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp
index da2d173..f49cbd0 100644
--- a/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp
+++ b/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp
@@ -46,6 +46,11 @@
#include <QtDeclarative/qdeclarativeitem.h>
#include <QDebug>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativetimer : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro b/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro
index 02c480c..90e46d3 100644
--- a/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro
+++ b/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro
@@ -8,9 +8,8 @@ SOURCES += tst_qdeclarativevaluetypes.cpp \
testtypes.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp
index 53fd68c..81334f2 100644
--- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp
+++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp
@@ -46,6 +46,15 @@
#include <private/qdeclarativevaluetype_p.h>
#include "testtypes.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
+QT_BEGIN_NAMESPACE
+extern int qt_defaultDpi();
+QT_END_NAMESPACE
+
class tst_qdeclarativevaluetypes : public QObject
{
Q_OBJECT
@@ -464,7 +473,7 @@ void tst_qdeclarativevaluetypes::font()
QCOMPARE(object->property("f_overline").toBool(), object->font().overline());
QCOMPARE(object->property("f_strikeout").toBool(), object->font().strikeOut());
QCOMPARE(object->property("f_pointSize").toDouble(), object->font().pointSizeF());
- QCOMPARE(object->property("f_pixelSize").toInt(), object->font().pixelSize());
+ QCOMPARE(object->property("f_pixelSize").toInt(), int((object->font().pointSizeF() * qt_defaultDpi()) / qreal(72.)));
QCOMPARE(object->property("f_capitalization").toInt(), (int)object->font().capitalization());
QCOMPARE(object->property("f_letterSpacing").toDouble(), object->font().letterSpacing());
QCOMPARE(object->property("f_wordSpacing").toDouble(), object->font().wordSpacing());
diff --git a/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro b/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro
index ad54713..21a9195 100644
--- a/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro
+++ b/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro
@@ -5,9 +5,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeview.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeview/tst_qdeclarativeview.cpp b/tests/auto/declarative/qdeclarativeview/tst_qdeclarativeview.cpp
index b183105..6450e38 100644
--- a/tests/auto/declarative/qdeclarativeview/tst_qdeclarativeview.cpp
+++ b/tests/auto/declarative/qdeclarativeview/tst_qdeclarativeview.cpp
@@ -47,6 +47,11 @@
#include <QtGui/qgraphicswidget.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativeView : public QObject
{
@@ -75,6 +80,7 @@ void tst_QDeclarativeView::resizemodedeclarativeitem()
QVERIFY(canvas);
QSignalSpy sceneResizedSpy(canvas, SIGNAL(sceneResized(QSize)));
canvas->setResizeMode(QDeclarativeView::SizeRootObjectToView);
+ QCOMPARE(QSize(0,0), canvas->initialSize());
canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/resizemodedeclarativeitem.qml"));
QDeclarativeItem* declarativeItem = qobject_cast<QDeclarativeItem*>(canvas->rootObject());
QVERIFY(declarativeItem);
@@ -85,6 +91,7 @@ void tst_QDeclarativeView::resizemodedeclarativeitem()
QCOMPARE(declarativeItem->height(), 200.0);
QCOMPARE(canvas->size(), QSize(200, 200));
QCOMPARE(canvas->size(), canvas->sizeHint());
+ QCOMPARE(canvas->size(), canvas->initialSize());
QCOMPARE(sceneResizedSpy.count(), 1);
// size update from view
@@ -130,6 +137,7 @@ void tst_QDeclarativeView::resizemodedeclarativeitem()
QCOMPARE(declarativeItem->width(), 200.0);
QCOMPARE(declarativeItem->height(), 200.0);
QCOMPARE(canvas->size(), canvas->sizeHint());
+ QCOMPARE(canvas->size(), canvas->initialSize());
QCOMPARE(sceneResizedSpy2.count(), 1);
// size update from root object
@@ -179,6 +187,7 @@ void tst_QDeclarativeView::resizemodegraphicswidget()
QCOMPARE(canvas->size(), QSize(200, 200));
QCOMPARE(canvas->size(), QSize(200, 200));
QCOMPARE(canvas->size(), canvas->sizeHint());
+ QCOMPARE(canvas->size(), canvas->initialSize());
QCOMPARE(sceneResizedSpy.count(), 1);
// size update from view
@@ -218,6 +227,7 @@ void tst_QDeclarativeView::resizemodegraphicswidget()
QCOMPARE(graphicsWidget->size(), QSizeF(200.0, 200.0));
QCOMPARE(canvas->size(), QSize(200, 200));
QCOMPARE(canvas->size(), canvas->sizeHint());
+ QCOMPARE(canvas->size(), canvas->initialSize());
QCOMPARE(sceneResizedSpy2.count(), 1);
// size update from root object
diff --git a/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml b/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml
index 687fac6..57db82d 100644
--- a/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml
+++ b/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml
@@ -1,10 +1,19 @@
import Qt 4.7
Rectangle {
color: "black"
- width: (runtime.orientation == Orientation.Landscape) ? 300 : 200
- height: (runtime.orientation == Orientation.Landscape) ? 200 : 300
+ width: (runtime.orientation == Orientation.Landscape || runtime.orientation == Orientation.LandscapeInverted) ? 300 : 200
+ height: (runtime.orientation == Orientation.Landscape || runtime.orientation == Orientation.LandscapeInverted) ? 200 : 300
Text {
- text: runtime.orientation == Orientation.Landscape ? "Landscape" : "Portrait"
+ text: {
+ if (runtime.orientation == Orientation.Portrait)
+ return "Portrait"
+ if (runtime.orientation == Orientation.PortraitInverted)
+ return "PortraitInverted"
+ if (runtime.orientation == Orientation.Landscape)
+ return "Landscape"
+ if (runtime.orientation == Orientation.LandscapeInverted)
+ return "LandscapeInverted"
+ }
color: "white"
}
-} \ No newline at end of file
+}
diff --git a/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro b/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro
index 9bb6161..6189916 100644
--- a/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro
+++ b/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro
@@ -7,9 +7,8 @@ include(../../../../tools/qml/qml.pri)
SOURCES += tst_qdeclarativeviewer.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
index 9429dc9..f30f758 100644
--- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
+++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
@@ -43,7 +43,14 @@
#include <QtDeclarative/qdeclarativeengine.h>
#include <QtDeclarative/qdeclarativeview.h>
#include <QtDeclarative/qdeclarativeitem.h>
+#include "../../../shared/util.h"
#include "qmlruntime.h"
+#include "../../../shared/util.h"
+
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
class tst_QDeclarativeViewer : public QObject
@@ -54,6 +61,11 @@ public:
private slots:
void orientation();
+ void loading();
+ void fileBrowser();
+ void resizing();
+ void paths();
+ void slowMode();
private:
QDeclarativeEngine engine;
@@ -75,32 +87,228 @@ void tst_QDeclarativeViewer::orientation()
QVERIFY(rootItem);
window.show();
+ QApplication::setActiveWindow(&window);
+ QTest::qWaitForWindowShown(&window);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&window));
+
QCOMPARE(rootItem->width(), 200.0);
QCOMPARE(rootItem->height(), 300.0);
- QCOMPARE(viewer->view()->size(), QSize(200, 300));
+ QTRY_COMPARE(viewer->view()->size(), QSize(200, 300));
QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300));
QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height()));
QCOMPARE(viewer->size(), viewer->sizeHint());
- viewer->toggleOrientation();
+ viewer->rotateOrientation();
qApp->processEvents();
QCOMPARE(rootItem->width(), 300.0);
QCOMPARE(rootItem->height(), 200.0);
- QCOMPARE(viewer->view()->size(), QSize(300, 200));
+ QTRY_COMPARE(viewer->view()->size(), QSize(300, 200));
QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(300, 200));
QCOMPARE(viewer->size(), QSize(300, 200+viewer->menuBar()->height()));
QCOMPARE(viewer->size(), viewer->sizeHint());
- viewer->toggleOrientation();
+ viewer->rotateOrientation();
qApp->processEvents();
QCOMPARE(rootItem->width(), 200.0);
QCOMPARE(rootItem->height(), 300.0);
+ QTRY_COMPARE(viewer->view()->size(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300));
+ QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height()));
+ QCOMPARE(viewer->size(), viewer->sizeHint());
+}
+
+void tst_QDeclarativeViewer::loading()
+{
+ QDeclarativeViewer *viewer = new QDeclarativeViewer();
+ QVERIFY(viewer);
+ viewer->setSizeToView(true);
+ viewer->open(SRCDIR "/data/orientation.qml");
+ QVERIFY(viewer->view());
+ QVERIFY(viewer->menuBar());
+ QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
+ QVERIFY(rootItem);
+ viewer->show();
+
+ QApplication::setActiveWindow(viewer);
+ QTest::qWaitForWindowShown(viewer);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(viewer));
+
+ // initial size
+ QTRY_COMPARE(rootItem->width(), 200.0);
+ QTRY_COMPARE(rootItem->height(), 300.0);
QCOMPARE(viewer->view()->size(), QSize(200, 300));
QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300));
QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height()));
QCOMPARE(viewer->size(), viewer->sizeHint());
+
+ viewer->resize(QSize(400, 500));
+ qApp->processEvents();
+
+ // window resized
+ QTRY_COMPARE(rootItem->width(), 400.0);
+ QTRY_COMPARE(rootItem->height(), 500.0-viewer->menuBar()->height());
+ QCOMPARE(viewer->view()->size(), QSize(400, 500-viewer->menuBar()->height()));
+ QCOMPARE(viewer->view()->initialSize(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(400, 500-viewer->menuBar()->height()));
+ QCOMPARE(viewer->size(), QSize(400, 500));
+ QCOMPARE(viewer->size(), viewer->sizeHint());
+
+ viewer->reload();
+ rootItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
+ QVERIFY(rootItem);
+
+ // reload cause the window to return back to initial size
+ QTRY_COMPARE(rootItem->width(), 200.0);
+ QTRY_COMPARE(rootItem->height(), 300.0);
+ QCOMPARE(viewer->view()->size(), QSize(200, 300));
+ QCOMPARE(viewer->view()->initialSize(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300));
+ QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height()));
+ QCOMPARE(viewer->size(), viewer->sizeHint());
+
+ viewer->resize(QSize(400, 500));
+ qApp->processEvents();
+
+ // window resized again
+ QTRY_COMPARE(rootItem->width(), 400.0);
+ QTRY_COMPARE(rootItem->height(), 500.0-viewer->menuBar()->height());
+ QCOMPARE(viewer->view()->size(), QSize(400, 500-viewer->menuBar()->height()));
+ QCOMPARE(viewer->view()->initialSize(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(400, 500-viewer->menuBar()->height()));
+ QCOMPARE(viewer->size(), QSize(400, 500));
+ QCOMPARE(viewer->size(), viewer->sizeHint());
+
+ viewer->open(SRCDIR "/data/orientation.qml");
+ rootItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
+ QVERIFY(rootItem);
+
+ // open also causes the window to return back to initial size
+ QTRY_COMPARE(rootItem->width(), 200.0);
+ QTRY_COMPARE(rootItem->height(), 300.0);
+ QCOMPARE(viewer->view()->size(), QSize(200, 300));
+ QCOMPARE(viewer->view()->initialSize(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300));
+ QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height()));
+ QCOMPARE(viewer->size(), viewer->sizeHint());
+}
+
+void tst_QDeclarativeViewer::fileBrowser()
+{
+ QDeclarativeViewer *viewer = new QDeclarativeViewer();
+ QVERIFY(viewer);
+ viewer->setUseNativeFileBrowser(false);
+ viewer->openFile();
+ viewer->show();
+
+ QApplication::setActiveWindow(viewer);
+ QTest::qWaitForWindowShown(viewer);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(viewer));
+
+ // Browser.qml successfully loaded
+ QDeclarativeItem* browserItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
+ QVERIFY(viewer->view());
+ QVERIFY(viewer->menuBar());
+ QVERIFY(browserItem);
+
+ // load something
+ viewer->open(SRCDIR "/data/orientation.qml");
+ QVERIFY(viewer->view());
+ QVERIFY(viewer->menuBar());
+ QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
+ QVERIFY(rootItem);
+ QVERIFY(browserItem != rootItem);
+
+ // go back to Browser.qml
+ viewer->openFile();
+ browserItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
+ QVERIFY(viewer->view());
+ QVERIFY(viewer->menuBar());
+ QVERIFY(browserItem);
+}
+
+void tst_QDeclarativeViewer::resizing()
+{
+ QDeclarativeViewer *viewer = new QDeclarativeViewer();
+ QVERIFY(viewer);
+ viewer->open(SRCDIR "/data/orientation.qml");
+ QVERIFY(viewer->view());
+ QVERIFY(viewer->menuBar());
+ QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
+ QVERIFY(rootItem);
+ viewer->show();
+
+ QApplication::setActiveWindow(viewer);
+ QTest::qWaitForWindowShown(viewer);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(viewer));
+
+ // initial size
+ QCOMPARE(rootItem->width(), 200.0);
+ QCOMPARE(rootItem->height(), 300.0);
+ QCOMPARE(viewer->view()->size(), QSize(200, 300));
+ QCOMPARE(viewer->view()->initialSize(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300));
+ QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height()));
+ QCOMPARE(viewer->size(), viewer->sizeHint());
+
+ viewer->setSizeToView(false);
+
+ // size view to root object
+ rootItem->setWidth(150);
+ rootItem->setHeight(200);
+ qApp->processEvents();
+
+ QCOMPARE(rootItem->width(), 150.0);
+ QCOMPARE(rootItem->height(), 200.0);
+ QCOMPARE(viewer->view()->size(), QSize(150, 200));
+ QCOMPARE(viewer->view()->initialSize(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(150, 200));
+ QCOMPARE(viewer->size(), QSize(150, 200+viewer->menuBar()->height()));
+
+ // do not size root object to view
+ viewer->resize(QSize(180,250));
+ QCOMPARE(rootItem->width(), 150.0);
+ QCOMPARE(rootItem->height(), 200.0);
+
+ viewer->setSizeToView(true);
+
+ // size root object to view
+ viewer->resize(QSize(250,350));
+ qApp->processEvents();
+
+ QTRY_COMPARE(rootItem->width(), 250.0);
+ QTRY_COMPARE(rootItem->height(), 350.0-viewer->menuBar()->height());
+ QCOMPARE(viewer->view()->size(), QSize(250, 350-viewer->menuBar()->height()));
+ QCOMPARE(viewer->view()->initialSize(), QSize(200, 300));
+ QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(250, 350-viewer->menuBar()->height()));
+ QCOMPARE(viewer->size(), QSize(250, 350));
+
+ // do not size view to root object
+ rootItem->setWidth(150);
+ rootItem->setHeight(200);
+ QTRY_COMPARE(viewer->size(), QSize(250, 350));
+}
+
+void tst_QDeclarativeViewer::paths()
+{
+ QDeclarativeViewer *viewer = new QDeclarativeViewer();
+ QVERIFY(viewer);
+
+ viewer->addLibraryPath("miscImportPath");
+ viewer->view()->engine()->importPathList().contains("miscImportPath");
+
+ viewer->addPluginPath("miscPluginPath");
+ viewer->view()->engine()->pluginPathList().contains("miscPluginPath");
+}
+
+void tst_QDeclarativeViewer::slowMode()
+{
+ QDeclarativeViewer *viewer = new QDeclarativeViewer();
+ QVERIFY(viewer);
+
+ viewer->setSlowMode(true);
+ viewer->setSlowMode(false);
}
QTEST_MAIN(tst_QDeclarativeViewer)
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro b/tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro
index c87171b..92e5f60 100644
--- a/tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro
@@ -5,9 +5,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativevisualdatamodel.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
index 8f3fb16..90c9c6f 100644
--- a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
@@ -52,6 +52,11 @@
#include <private/qdeclarativevaluetype_p.h>
#include <math.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
static void initStandardTreeModel(QStandardItemModel *model)
{
QStandardItem *item;
diff --git a/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro
index 8caa393..562a9fb 100644
--- a/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro
+++ b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro
@@ -5,11 +5,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativewebview.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp
index beabf86..f33e5a4 100644
--- a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp
+++ b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp
@@ -50,6 +50,11 @@
#include <QtCore/qfile.h>
#include <QtGui/qpainter.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativewebview : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro
index 36b3449..2f8f23d 100644
--- a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro
+++ b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro
@@ -4,11 +4,9 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeworkerscript.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp
index 7a4315a..52c11e9 100644
--- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp
+++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp
@@ -53,6 +53,11 @@
Q_DECLARE_METATYPE(QScriptValue)
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_QDeclarativeWorkerScript : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro b/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro
index b54f670..619b239 100644
--- a/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro
+++ b/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro
@@ -8,11 +8,9 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativexmlhttprequest.cpp \
../shared/testhttpserver.cpp
-# Define SRCDIR equal to test's source directory
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp
index 1d26f2c..8141fcb 100644
--- a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp
+++ b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp
@@ -48,6 +48,11 @@
#define SERVER_PORT 14445
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
class tst_qdeclarativexmlhttprequest : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro b/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro
index 7c006f1..472cffb 100644
--- a/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro
+++ b/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro
@@ -9,9 +9,8 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativexmllistmodel.cpp
symbian: {
- DEFINES += SRCDIR=\".\"
importFiles.sources = data
- importFiles.path =
+ importFiles.path = .
DEPLOYMENT = importFiles
} else {
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
index 35790e4..bd19bd3 100644
--- a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
+++ b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
@@ -50,6 +50,11 @@
#include <private/qdeclarativexmllistmodel_p.h>
#include "../../../shared/util.h"
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define SRCDIR "."
+#endif
+
typedef QPair<int, int> QDeclarativeXmlListRange;
typedef QList<QVariantList> QDeclarativeXmlModelData;
diff --git a/tests/auto/declarative/qmlvisual/qmlvisual.pro b/tests/auto/declarative/qmlvisual/qmlvisual.pro
index dca9b04..cb7e5d7 100644
--- a/tests/auto/declarative/qmlvisual/qmlvisual.pro
+++ b/tests/auto/declarative/qmlvisual/qmlvisual.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qmlvisual.cpp
symbian: {
- importFiles.path =
+ importFiles.path = .
importFiles.sources = animation \
fillmode \
focusscope \
@@ -28,8 +28,6 @@ symbian: {
selftest_noimages \
webview
DEPLOYMENT = importFiles
-
- DEFINES += QT_TEST_SOURCE_DIR=\".\"
} else {
DEFINES += QT_TEST_SOURCE_DIR=\"\\\"$$PWD\\\"\"
}
diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
index 71dc451..a2d3273 100644
--- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
+++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
@@ -47,6 +47,11 @@
#include <QProcess>
#include <QFile>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+#define QT_TEST_SOURCE_DIR "."
+#endif
+
enum Mode { Record, RecordNoVisuals, RecordSnapshot, Play, TestVisuals, RemoveVisuals, UpdateVisuals, UpdatePlatformVisuals, Test };
static QString testdir;
diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp
index 4a9f1d1..7c1170c 100644
--- a/tests/auto/gestures/tst_gestures.cpp
+++ b/tests/auto/gestures/tst_gestures.cpp
@@ -49,6 +49,7 @@
#include <qgesture.h>
#include <qgesturerecognizer.h>
#include <qgraphicsitem.h>
+#include <qgraphicswidget.h>
#include <qgraphicsview.h>
#include <qmainwindow.h>
@@ -358,6 +359,7 @@ private slots:
void viewportCoordinates();
void partialGesturePropagation();
void testQGestureRecognizerCleanup();
+ void testReuseCanceledGestures();
};
tst_Gestures::tst_Gestures()
@@ -2069,5 +2071,169 @@ void tst_Gestures::testQGestureRecognizerCleanup()
delete w;
}
+class ReuseCanceledGesturesRecognizer : public QGestureRecognizer
+{
+public:
+ enum Type {
+ RmbAndCancelAllType,
+ LmbType
+ };
+
+ ReuseCanceledGesturesRecognizer(Type type) : m_type(type) {}
+
+ QGesture *create(QObject *) {
+ QGesture *g = new QGesture;
+ return g;
+ }
+
+ Result recognize(QGesture *gesture, QObject *, QEvent *event) {
+ QMouseEvent *me = static_cast<QMouseEvent *>(event);
+ Qt::MouseButton mouseButton(m_type == LmbType ? Qt::LeftButton : Qt::RightButton);
+
+ switch(event->type()) {
+ case QEvent::MouseButtonPress:
+ if (me->button() == mouseButton && gesture->state() == Qt::NoGesture) {
+ gesture->setHotSpot(QPointF(me->globalPos()));
+ if (m_type == RmbAndCancelAllType)
+ gesture->setGestureCancelPolicy(QGesture::CancelAllInContext);
+ return QGestureRecognizer::TriggerGesture;
+ }
+ break;
+ case QEvent::MouseButtonRelease:
+ if (me->button() == mouseButton && gesture->state() > Qt::NoGesture)
+ return QGestureRecognizer::FinishGesture;
+ default:
+ break;
+ }
+ return QGestureRecognizer::Ignore;
+ }
+private:
+ Type m_type;
+};
+
+class ReuseCanceledGesturesWidget : public QGraphicsWidget
+{
+ public:
+ ReuseCanceledGesturesWidget(Qt::GestureType gestureType = Qt::TapGesture, QGraphicsItem *parent = 0)
+ : QGraphicsWidget(parent),
+ m_gestureType(gestureType),
+ m_started(0), m_updated(0), m_canceled(0), m_finished(0)
+ {
+ }
+
+ bool event(QEvent *event) {
+ if (event->type() == QEvent::Gesture) {
+ QGesture *gesture = static_cast<QGestureEvent*>(event)->gesture(m_gestureType);
+ if (gesture) {
+ switch(gesture->state()) {
+ case Qt::GestureStarted: m_started++; break;
+ case Qt::GestureUpdated: m_updated++; break;
+ case Qt::GestureFinished: m_finished++; break;
+ case Qt::GestureCanceled: m_canceled++; break;
+ default: break;
+ }
+ }
+ return true;
+ }
+ if (event->type() == QEvent::GraphicsSceneMousePress) {
+ return true;
+ }
+ return QGraphicsWidget::event(event);
+ }
+
+ int started() { return m_started; }
+ int updated() { return m_updated; }
+ int finished() { return m_finished; }
+ int canceled() { return m_canceled; }
+
+ private:
+ Qt::GestureType m_gestureType;
+ int m_started;
+ int m_updated;
+ int m_canceled;
+ int m_finished;
+};
+
+void tst_Gestures::testReuseCanceledGestures()
+{
+ Qt::GestureType cancellingGestureTypeId = QGestureRecognizer::registerRecognizer(
+ new ReuseCanceledGesturesRecognizer(ReuseCanceledGesturesRecognizer::RmbAndCancelAllType));
+ Qt::GestureType tapGestureTypeId = QGestureRecognizer::registerRecognizer(
+ new ReuseCanceledGesturesRecognizer(ReuseCanceledGesturesRecognizer::LmbType));
+
+ QMainWindow mw;
+ mw.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ QGraphicsView *gv = new QGraphicsView(&mw);
+ QGraphicsScene *scene = new QGraphicsScene;
+
+ gv->setScene(scene);
+ scene->setSceneRect(0,0,100,100);
+
+ // Create container and add to the scene
+ ReuseCanceledGesturesWidget *container = new ReuseCanceledGesturesWidget;
+ container->grabGesture(cancellingGestureTypeId); // << container grabs canceling gesture
+
+ // Create widget and add to the scene
+ ReuseCanceledGesturesWidget *target = new ReuseCanceledGesturesWidget(tapGestureTypeId, container);
+ target->grabGesture(tapGestureTypeId);
+
+ container->setGeometry(scene->sceneRect());
+
+ scene->addItem(container);
+
+ mw.setCentralWidget(gv);
+
+ // Viewport needs to grab all gestures that widgets in scene grab
+ gv->viewport()->grabGesture(cancellingGestureTypeId);
+ gv->viewport()->grabGesture(tapGestureTypeId);
+
+ mw.show();
+ QTest::qWaitForWindowShown(&mw);
+
+ QPoint targetPos(gv->mapFromScene(target->mapToScene(target->rect().center())));
+ targetPos = gv->viewport()->mapFromParent(targetPos);
+
+ // "Tap" starts on child widget
+ QTest::mousePress(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QCOMPARE(target->started(), 1);
+ QCOMPARE(target->updated(), 0);
+ QCOMPARE(target->finished(), 0);
+ QCOMPARE(target->canceled(), 0);
+
+ // Canceling gesture starts on parent
+ QTest::mousePress(gv->viewport(), Qt::RightButton, 0, targetPos);
+ QCOMPARE(target->started(), 1);
+ QCOMPARE(target->updated(), 0);
+ QCOMPARE(target->finished(), 0);
+ QCOMPARE(target->canceled(), 1); // <- child canceled
+
+ // Canceling gesture ends
+ QTest::mouseRelease(gv->viewport(), Qt::RightButton, 0, targetPos);
+ QCOMPARE(target->started(), 1);
+ QCOMPARE(target->updated(), 0);
+ QCOMPARE(target->finished(), 0);
+ QCOMPARE(target->canceled(), 1);
+
+ // Tap would end if not canceled
+ QTest::mouseRelease(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QCOMPARE(target->started(), 1);
+ QCOMPARE(target->updated(), 0);
+ QCOMPARE(target->finished(), 0);
+ QCOMPARE(target->canceled(), 1);
+
+ // New "Tap" starts
+ QTest::mousePress(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QCOMPARE(target->started(), 2);
+ QCOMPARE(target->updated(), 0);
+ QCOMPARE(target->finished(), 0);
+ QCOMPARE(target->canceled(), 1);
+
+ QTest::mouseRelease(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QCOMPARE(target->started(), 2);
+ QCOMPARE(target->updated(), 0);
+ QCOMPARE(target->finished(), 1);
+ QCOMPARE(target->canceled(), 1);
+}
+
QTEST_MAIN(tst_Gestures)
#include "tst_gestures.moc"
diff --git a/tests/auto/linguist/lconvert/data/test20.ts b/tests/auto/linguist/lconvert/data/test20.ts
index 542cdee..f042edf 100644
--- a/tests/auto/linguist/lconvert/data/test20.ts
+++ b/tests/auto/linguist/lconvert/data/test20.ts
@@ -147,4 +147,16 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>Bizarre ~ and | context~</name>
+ <message>
+ <source>just something</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>something else</source>
+ <comment>comment with | and ~ and so~</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
diff --git a/tests/auto/linguist/lupdate/testdata/good/cmdline_order/a.h b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/a.h
new file mode 100644
index 0000000..7059132
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/a.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define XX QT_TRANSLATE_NOOP("aaa", "some text")
diff --git a/doc/src/snippets/declarative/repeater-modeldata.qml b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/b.h
index 3b4cc6d..ce3e1a2 100644
--- a/doc/src/snippets/declarative/repeater-modeldata.qml
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/b.h
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
+** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,14 +39,6 @@
**
****************************************************************************/
-import Qt 4.7
-
-//! [0]
-Column {
- Repeater {
- model: ["apples", "oranges", "pears"]
- Text { text: "Data: " + modelData }
- }
-}
-//! [0]
+#include "a.h"
+#define YY QT_TRANSLATE_NOOP("bbb", "some text")
diff --git a/tests/auto/linguist/lupdate/testdata/good/cmdline_order/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/lupdatecmd
new file mode 100644
index 0000000..edd91f7
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/lupdatecmd
@@ -0,0 +1 @@
+lupdate b.h a.h -ts project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/cmdline_order/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/project.ts.result
new file mode 100644
index 0000000..6028cbb
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_order/project.ts.result
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>aaa</name>
+ <message>
+ <location filename="a.h" line="42"/>
+ <source>some text</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>bbb</name>
+ <message>
+ <location filename="b.h" line="44"/>
+ <source>some text</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/linguist/lupdate/testdata/good/lacksqobject/expectedoutput.txt b/tests/auto/linguist/lupdate/testdata/good/lacksqobject/expectedoutput.txt
index 72ec3c5..f6fc400 100644
--- a/tests/auto/linguist/lupdate/testdata/good/lacksqobject/expectedoutput.txt
+++ b/tests/auto/linguist/lupdate/testdata/good/lacksqobject/expectedoutput.txt
@@ -1,8 +1,4 @@
.*/lupdate/testdata/good/lacksqobject/main.cpp:58: Class 'B' lacks Q_OBJECT macro
-
.*/lupdate/testdata/good/lacksqobject/main.cpp:65: Class 'C' lacks Q_OBJECT macro
-
.*/lupdate/testdata/good/lacksqobject/main.cpp:78: Class 'nsB::B' lacks Q_OBJECT macro
-
.*/lupdate/testdata/good/lacksqobject/main.cpp:84: Class 'nsB::C' lacks Q_OBJECT macro
-
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt
index e3543c9..195c0e6 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt
@@ -1,8 +1,4 @@
.*/lupdate/testdata/good/parsecpp2/main.cpp:51: Excess closing brace .*
-
.*/lupdate/testdata/good/parsecpp2/main.cpp:55: Excess closing brace .*
-
.*/lupdate/testdata/good/parsecpp2/main.cpp:61: Excess closing brace .*
-
.*/lupdate/testdata/good/parsecpp2/main.cpp:65: Excess closing brace .*
-
diff --git a/tests/auto/maketestselftest/checktest/checktest.pro b/tests/auto/maketestselftest/checktest/checktest.pro
new file mode 100644
index 0000000..79c5ca5
--- /dev/null
+++ b/tests/auto/maketestselftest/checktest/checktest.pro
@@ -0,0 +1,7 @@
+TEMPLATE = app
+TARGET = checktest
+CONFIG += console
+CONFIG -= app_bundle
+DESTDIR = ./
+QT = core
+SOURCES += main.cpp
diff --git a/tests/auto/maketestselftest/checktest/main.cpp b/tests/auto/maketestselftest/checktest/main.cpp
new file mode 100644
index 0000000..af98953
--- /dev/null
+++ b/tests/auto/maketestselftest/checktest/main.cpp
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QCoreApplication>
+#include <QDir>
+#include <QFile>
+#include <QFileInfo>
+#include <QStringList>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+void fail(QString const& message)
+{
+ printf("CHECKTEST FAIL: %s\n", qPrintable(message));
+ exit(0);
+}
+
+void pass(QString const& message)
+{
+ printf("CHECKTEST PASS: %s\n", qPrintable(message));
+ exit(0);
+}
+
+int main(int argc, char** argv)
+{
+ QCoreApplication app(argc, argv);
+
+ QStringList args = app.arguments();
+ args.removeFirst(); // ourself
+
+ QString args_quoted = QString("'%1'").arg(args.join("','"));
+
+#ifdef Q_WS_QWS
+ {
+ // for QWS we expect tests to be run as the QWS server
+ QString qws = args.takeLast();
+ if (qws != "-qws") {
+ fail(QString("Expected test to be run with `-qws', but it wasn't; args: %1").arg(args_quoted));
+ }
+ }
+#endif
+
+ if (args.count() != 1) {
+ fail(QString("These arguments are not what I expected: %1").arg(args_quoted));
+ }
+
+ QString test = args.at(0);
+
+ QFileInfo testfile(test);
+ if (!testfile.exists()) {
+ fail(QString("File %1 does not exist (my working directory is: %2, my args are: %3)")
+ .arg(test)
+ .arg(QDir::currentPath())
+ .arg(args_quoted)
+ );
+ }
+
+ pass(args_quoted);
+}
+
diff --git a/tests/auto/maketestselftest/maketestselftest.pro b/tests/auto/maketestselftest/maketestselftest.pro
index 6cc1744..a27d5d7 100644
--- a/tests/auto/maketestselftest/maketestselftest.pro
+++ b/tests/auto/maketestselftest/maketestselftest.pro
@@ -1,9 +1,6 @@
-load(qttest_p4)
-
-SOURCES += tst_maketestselftest.cpp
-QT = core
-
-DEFINES += SRCDIR=\\\"$$PWD/\\\"
+TEMPLATE = subdirs
+SUBDIRS = checktest test
+test.depends = checktest
requires(!cross_compile)
diff --git a/tests/auto/maketestselftest/test/test.pro b/tests/auto/maketestselftest/test/test.pro
new file mode 100644
index 0000000..d9de51e
--- /dev/null
+++ b/tests/auto/maketestselftest/test/test.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+
+TARGET = ../tst_maketestselftest
+SOURCES += ../tst_maketestselftest.cpp
+QT = core
+
+DEFINES += SRCDIR=\\\"$$PWD/..\\\"
+
+requires(!cross_compile)
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_maketestselftest
+} else {
+ TARGET = ../../release/tst_maketestselftest
+ }
+}
+
diff --git a/tests/auto/maketestselftest/tst_maketestselftest.cpp b/tests/auto/maketestselftest/tst_maketestselftest.cpp
index 437e143..a9077e3 100644
--- a/tests/auto/maketestselftest/tst_maketestselftest.cpp
+++ b/tests/auto/maketestselftest/tst_maketestselftest.cpp
@@ -66,6 +66,8 @@ private slots:
void naming_convention();
void naming_convention_data();
+ void make_check();
+
private:
QStringList find_subdirs(QString const&, FindSubdirsMode, QString const& = QString());
@@ -446,6 +448,83 @@ QStringList tst_MakeTestSelfTest::find_subdirs(QString const& pro_file, FindSubd
return out;
}
+void tst_MakeTestSelfTest::make_check()
+{
+ /*
+ Run `make check' over the whole tests tree with a custom TESTRUNNER,
+ to verify that the TESTRUNNER mechanism works right.
+ */
+ QString testsDir(SRCDIR "/..");
+ QString checktest(SRCDIR "/checktest/checktest");
+
+#if defined(Q_OS_WIN32) || defined(Q_OS_MAC)
+ if (qgetenv("RUN_SLOW_TESTS").isEmpty()) {
+ QSKIP("This test is too slow to run by default on this OS. Set RUN_SLOW_TESTS=1 to run it.", SkipAll);
+ }
+#endif
+
+#ifdef Q_OS_WIN32
+ checktest.replace("/", "\\");
+ checktest += ".exe";
+#endif
+
+ QProcess make;
+ make.setWorkingDirectory(testsDir);
+
+ QStringList arguments;
+ arguments << "-k";
+ arguments << "check";
+ arguments << QString("TESTRUNNER=%1").arg(checktest);
+
+ // find the right make; from externaltests.cpp
+ static const char makes[] =
+ "nmake.exe\0"
+ "mingw32-make.exe\0"
+ "gmake\0"
+ "make\0"
+ ;
+
+ bool ok = false;
+ for (const char *p = makes; *p; p += strlen(p) + 1) {
+ make.start(p, arguments);
+ if (make.waitForStarted()) {
+ ok = true;
+ break;
+ }
+ }
+
+ if (!ok) {
+ QFAIL("Could not find the right make tool in PATH");
+ }
+
+ QVERIFY(make.waitForFinished(1000 * 60 * 10));
+ QCOMPARE(make.exitStatus(), QProcess::NormalExit);
+
+ int pass = 0;
+ QList<QByteArray> out = make.readAllStandardOutput().split('\n');
+ QStringList fails;
+ foreach (QByteArray line, out) {
+ while (line.endsWith("\r")) {
+ line.chop(1);
+ }
+ if (line.startsWith("CHECKTEST FAIL")) {
+ fails << QString::fromLocal8Bit(line);
+ }
+ if (line.startsWith("CHECKTEST PASS")) {
+ ++pass;
+ }
+ }
+
+ // We can't check that the exit code of make is 0, because some tests
+ // may have failed to compile, but that doesn't mean `make check' is broken.
+ // We do assume there are at least this many unbroken tests, though.
+ QVERIFY2(fails.count() == 0,
+ qPrintable(QString("`make check' doesn't work for %1 tests:\n%2")
+ .arg(fails.count()).arg(fails.join("\n")))
+ );
+ QVERIFY(pass > 50);
+}
+
QStringList find_test_class(QString const& filename)
{
QStringList out;
diff --git a/tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp
index 558d4de..3125258 100644
--- a/tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp
+++ b/tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp
@@ -3148,8 +3148,8 @@ void tst_QDateTimeEdit::nextPrevSection()
EditorDateEdit edit;
edit.setDisplayFormat("hh/mm/bc9ss");
edit.setTime(QTime(12, 34, 56));
- edit.setSelectedSection(QDateTimeEdit::MinuteSection);
edit.show();
+ edit.setSelectedSection(QDateTimeEdit::MinuteSection);
QCOMPARE(edit.lineEdit()->selectedText(), QString("34")); // selftest
QTest::keyClick(&edit, key, modifiers);
QCOMPARE(edit.lineEdit()->selectedText(), selectedText);
diff --git a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/qfontmetrics/tst_qfontmetrics.cpp
index 5d73764..a22d624 100644
--- a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp
+++ b/tests/auto/qfontmetrics/tst_qfontmetrics.cpp
@@ -71,9 +71,9 @@ private slots:
void elidedText();
void veryNarrowElidedText();
void averageCharWidth();
+ void bypassShaping();
void elidedMultiLength();
void elidedMultiLengthF();
- void bearingIncludedInBoundingRect();
};
tst_QFontMetrics::tst_QFontMetrics()
@@ -219,6 +219,21 @@ void tst_QFontMetrics::averageCharWidth()
QVERIFY(fmf.averageCharWidth() != 0);
}
+void tst_QFontMetrics::bypassShaping()
+{
+ QFont f;
+ f.setStyleStrategy(QFont::ForceIntegerMetrics);
+ QFontMetrics fm(f);
+ QString text = " A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z";
+ int textWidth = fm.width(text, -1, Qt::TextBypassShaping);
+ QVERIFY(textWidth != 0);
+ int charsWidth = 0;
+ for (int i = 0; i < text.size(); ++i)
+ charsWidth += fm.width(text[i]);
+ // This assertion is needed in QtWebKit's WebCore::Font::offsetForPositionForSimpleText
+ QCOMPARE(textWidth, charsWidth);
+}
+
template<class FontMetrics> void elidedMultiLength_helper()
{
QString text1 = "Long Text 1\x9cShorter\x9csmall";
@@ -251,16 +266,5 @@ void tst_QFontMetrics::elidedMultiLengthF()
elidedMultiLength_helper<QFontMetricsF>();
}
-void tst_QFontMetrics::bearingIncludedInBoundingRect()
-{
- QFont font;
- font.setItalic(true);
- QRect brectItalic = QFontMetrics(font).boundingRect("ITALIC");
- font.setItalic(false);
- QRect brectNormal = QFontMetrics(font).boundingRect("ITALIC");
-
- QVERIFY(brectItalic.width() >= brectNormal.width());
-}
-
QTEST_MAIN(tst_QFontMetrics)
#include "tst_qfontmetrics.moc"
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 5547b02..fe68c8e 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -7584,6 +7584,7 @@ void tst_QGraphicsItem::itemUsesExtendedStyleOption()
scene.addItem(rect);
rect->setPos(200, 200);
QGraphicsView view(&scene);
+ view.setWindowFlags(Qt::X11BypassWindowManagerHint);
rect->startTrack = false;
view.show();
QTest::qWaitForWindowShown(&view);
diff --git a/tests/auto/qhash/tst_qhash.cpp b/tests/auto/qhash/tst_qhash.cpp
index 59576d9..3a7b54a 100644
--- a/tests/auto/qhash/tst_qhash.cpp
+++ b/tests/auto/qhash/tst_qhash.cpp
@@ -1154,6 +1154,26 @@ void tst_QHash::qmultihash_specific()
QVERIFY(i.key() == 9);
QVERIFY(i.value() == 98);
}
+
+ {
+ QMultiHash<int, int> map1;
+ map1.insert(42, 1);
+ map1.insert(10, 2);
+ map1.insert(48, 3);
+ QMultiHash<int, int> map2;
+ map2.insert(8, 4);
+ map2.insert(42, 5);
+ map2.insert(95, 12);
+
+ map1+=map2;
+ map2.insert(42, 1);
+ map2.insert(10, 2);
+ map2.insert(48, 3);
+ QCOMPARE(map1.count(), map2.count());
+ QVERIFY(map1.remove(42,5));
+ QVERIFY(map2.remove(42,5));
+ QVERIFY(map1 == map2);
+ }
}
template <typename T>
diff --git a/tests/auto/qmap/tst_qmap.cpp b/tests/auto/qmap/tst_qmap.cpp
index d3ed76d..a1b8de7 100644
--- a/tests/auto/qmap/tst_qmap.cpp
+++ b/tests/auto/qmap/tst_qmap.cpp
@@ -837,6 +837,26 @@ void tst_QMap::qmultimap_specific()
QVERIFY(i.key() == 9);
QVERIFY(i.value() == 98);
}
+
+ {
+ QMultiMap<int, int> map1;
+ map1.insert(42, 1);
+ map1.insert(10, 2);
+ map1.insert(48, 3);
+ QMultiMap<int, int> map2;
+ map2.insert(8, 4);
+ map2.insert(42, 5);
+ map2.insert(95, 12);
+
+ map1+=map2;
+ map2.insert(42, 1);
+ map2.insert(10, 2);
+ map2.insert(48, 3);
+ QCOMPARE(map1.count(), map2.count());
+ QVERIFY(map1.remove(42,5));
+ QVERIFY(map2.remove(42,5));
+ QVERIFY(map1 == map2);
+ }
}
QTEST_APPLESS_MAIN(tst_QMap)
diff --git a/tests/auto/qmetatype/tst_qmetatype.cpp b/tests/auto/qmetatype/tst_qmetatype.cpp
index f4e122f..8558e06 100644
--- a/tests/auto/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/qmetatype/tst_qmetatype.cpp
@@ -77,6 +77,7 @@ private slots:
void isRegistered_data();
void isRegistered();
void unregisterType();
+ void QTBUG11316_registerStreamBuiltin();
};
@@ -318,5 +319,12 @@ void tst_QMetaType::unregisterType()
QCOMPARE(QMetaType::isRegistered(typeId), false);
}
+void tst_QMetaType::QTBUG11316_registerStreamBuiltin()
+{
+ //should not crash;
+ qRegisterMetaTypeStreamOperators<QString>("QString");
+ qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
+}
+
QTEST_MAIN(tst_QMetaType)
#include "tst_qmetatype.moc"
diff --git a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
index 5854ae1..72d8eda 100644
--- a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
+++ b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
@@ -693,6 +693,12 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
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;
+
+ // do not accept cookies with non-alphanumeric characters in domain field (QTBUG-11029)
+ cookie = QNetworkCookie("NonAlphNumDomName", "NonAlphNumDomValue");
+ cookie.setDomain("!@#$%^&*();:."); // the ';' is actually problematic, because it is a separator
+ list = QList<QNetworkCookie>();
+ QTest::newRow("domain-non-alpha-numeric") << "NonAlphNumDomName=NonAlphNumDomValue; domain=!@#$%^&*()" << list;
}
void tst_QNetworkCookie::parseMultipleCookies()
diff --git a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
index 8ce10fb..5bbe8f6 100644
--- a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
+++ b/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
@@ -78,6 +78,56 @@ private slots:
void oldCacheVersionFile();
void sync();
+
+ void crashWhenParentingCache();
+};
+
+// FIXME same as in tst_qnetworkreply.cpp .. could be unified
+// Does not work for POST/PUT!
+class MiniHttpServer: public QTcpServer
+{
+ Q_OBJECT
+public:
+ QTcpSocket *client; // always the last one that was received
+ QByteArray dataToTransmit;
+ QByteArray receivedData;
+ bool doClose;
+ bool multiple;
+ int totalConnections;
+
+ MiniHttpServer(const QByteArray &data) : client(0), dataToTransmit(data), doClose(true), multiple(false), totalConnections(0)
+ {
+ listen();
+ connect(this, SIGNAL(newConnection()), this, SLOT(doAccept()));
+ }
+
+public slots:
+ void doAccept()
+ {
+ client = nextPendingConnection();
+ client->setParent(this);
+ ++totalConnections;
+ connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ }
+
+ void readyReadSlot()
+ {
+ receivedData += client->readAll();
+ int doubleEndlPos = receivedData.indexOf("\r\n\r\n");
+
+ if (doubleEndlPos != -1) {
+ // multiple requests incoming. remove the bytes of the current one
+ if (multiple)
+ receivedData.remove(0, doubleEndlPos+4);
+
+ client->write(dataToTransmit);
+ if (doClose) {
+ client->disconnectFromHost();
+ disconnect(client, 0, this, 0);
+ client = 0;
+ }
+ }
+ }
};
// Subclass that exposes the protected functions.
@@ -581,6 +631,33 @@ public:
Runner *other;
};
+void tst_QNetworkDiskCache::crashWhenParentingCache()
+{
+ // the trick here is to not send the complete response
+ // but some data. So we get a readyRead() and it gets tried
+ // to be saved to the cache
+ QByteArray data("HTTP/1.0 200 OK\r\nCache-Control: max-age=300\r\nAge: 1\r\nContent-Length: 5\r\n\r\n123");
+ MiniHttpServer server(data);
+
+ QNetworkAccessManager *manager = new QNetworkAccessManager();
+ QNetworkDiskCache *diskCache = new QNetworkDiskCache(manager); // parent to qnam!
+ // we expect the temp dir to be cleaned at some point anyway
+ diskCache->setCacheDirectory(QDir::tempPath() + "/cacheDir_" + QCoreApplication::applicationPid());
+ manager->setCache(diskCache);
+
+ QUrl url("http://127.0.0.1:" + QString::number(server.serverPort()));
+ QNetworkRequest request(url);
+ // request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
+ QNetworkReply *reply = manager->get(request); // new reply is parented to qnam
+
+ // wait for readyRead of reply!
+ connect(reply, SIGNAL(readyRead()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ delete manager; // crashed before..
+}
+
void tst_QNetworkDiskCache::sync()
{
// This tests would be a nice to have, but is currently not supported.
diff --git a/tests/auto/qsslcertificate/more-certificates/cert-large-serial-number.pem b/tests/auto/qsslcertificate/more-certificates/cert-large-serial-number.pem
new file mode 100644
index 0000000..ecb6c35
--- /dev/null
+++ b/tests/auto/qsslcertificate/more-certificates/cert-large-serial-number.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICGjCCAYMCFAECAwQFBgcICRCqu8zd7v8XGBkgMA0GCSqGSIb3DQEBBQUAMEwx
+CzAJBgNVBAYTAkdCMRIwEAYDVQQIEwlCZXJrc2hpcmUxEDAOBgNVBAcTB05ld2J1
+cnkxFzAVBgNVBAoTDk15IENvbXBhbnkgTHRkMB4XDTEwMDYwMTE1MDI0MVoXDTEx
+MDYwMTE1MDI0MVowTDELMAkGA1UEBhMCR0IxEjAQBgNVBAgTCUJlcmtzaGlyZTEQ
+MA4GA1UEBxMHTmV3YnVyeTEXMBUGA1UEChMOTXkgQ29tcGFueSBMdGQwgZ8wDQYJ
+KoZIhvcNAQEBBQADgY0AMIGJAoGBAM2q22/WNMmn8cC+5EEYGeICySLmp9W6Ay6e
+KHr0Xxp3X3epETuPfvAuxp7rOtkS18EMUegkUj8jw0IMEcbyHKFC/rTCaYOt93Cx
+GBXMIChiMPAsFeYzGa/D6xzAkfcRaJRQ+Ek3CDLXPnXfo7xpABXezYcPXAJrgsgB
+fWrwHdxzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtlScqSn4IHFLRiQYQdfOgsPi
+wdqD1MPZEniQE0Xp8McZ7kuYbGgdEqzeVgMHqitlzkNNtTz+2u37CbFNXDGCTy5D
+2JCgZxaAWNkh1w+4VB91HfMwEU0MqvAO7SB31FwbKNaB3gVnua++NL1cAkujyRny
+yR3PatYZCfESQ7oZgds=
+-----END CERTIFICATE-----
diff --git a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/qsslcertificate/tst_qsslcertificate.cpp
index c76c11f..505b867 100644
--- a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp
+++ b/tests/auto/qsslcertificate/tst_qsslcertificate.cpp
@@ -109,6 +109,7 @@ private slots:
void task256066toPem();
void nulInCN();
void nulInSan();
+ void largeSerialNumber();
// ### add tests for certificate bundles (multiple certificates concatenated into a single
// structure); both PEM and DER formatted
#endif
@@ -786,6 +787,18 @@ void tst_QSslCertificate::nulInSan()
QCOMPARE(dnssan, QString::fromLatin1(realSAN, sizeof realSAN - 1));
}
+void tst_QSslCertificate::largeSerialNumber()
+{
+ QList<QSslCertificate> certList =
+ QSslCertificate::fromPath(SRCDIR "more-certificates/cert-large-serial-number.pem");
+
+ QCOMPARE(certList.size(), 1);
+
+ const QSslCertificate &cert = certList.at(0);
+ QVERIFY(!cert.isNull());
+ QCOMPARE(cert.serialNumber(), QByteArray("01:02:03:04:05:06:07:08:09:10:aa:bb:cc:dd:ee:ff:17:18:19:20"));
+}
+
#endif // QT_NO_OPENSSL
QTEST_MAIN(tst_QSslCertificate)
diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp
index c7801ac..1d166f4 100644
--- a/tests/auto/qstatictext/tst_qstatictext.cpp
+++ b/tests/auto/qstatictext/tst_qstatictext.cpp
@@ -324,8 +324,7 @@ bool tst_QStaticText::supportsTransformations() const
QPaintEngine::Type type = engine->type();
- if (type == QPaintEngine::OpenGL2
- || type == QPaintEngine::OpenGL
+ if (type == QPaintEngine::OpenGL
#if !defined Q_WS_WIN
|| type == QPaintEngine::Raster
#endif
@@ -471,7 +470,7 @@ void tst_QStaticText::transformationChanged()
p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- p.scale(7.0, 5.0);
+ p.scale(2.0, 2.5);
p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
}
@@ -487,7 +486,7 @@ void tst_QStaticText::transformationChanged()
p.drawStaticText(QPointF(0, 0), text);
- p.scale(7.0, 5.0);
+ p.scale(2.0, 2.5);
p.drawStaticText(QPointF(0, 0), text);
}
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index 1bea4b7..c887936 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -207,6 +207,7 @@ private slots:
void repeated() const;
void repeated_data() const;
void task262677remove();
+ void QTBUG10404_compareRef();
};
typedef QList<int> IntList;
@@ -4828,6 +4829,38 @@ void tst_QString::task262677remove()
QVERIFY(driveName == QLatin1String("V:"));
}
+void tst_QString::QTBUG10404_compareRef()
+{
+ QString a = "ABCDEFGH";
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("BC")), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("BCD")) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("Bc"), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("bCD"), Qt::CaseInsensitive) < 0);
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BC")), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BCD")) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("Bc"), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("bCD"), Qt::CaseInsensitive) < 0);
+
+ QCOMPARE(QString::fromLatin1("BC").compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QString::fromLatin1("BCD").compare(QStringRef(&a, 1, 2)) > 0);
+ QCOMPARE(QString::fromLatin1("Bc").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QString::fromLatin1("bCD").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive) > 0);
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
+
+ QString a2 = "ABCDEFGh";
+ QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
+ QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
+}
+
+
QTEST_APPLESS_MAIN(tst_QString)
diff --git a/tests/auto/qtextcursor/tst_qtextcursor.cpp b/tests/auto/qtextcursor/tst_qtextcursor.cpp
index d44ce72..41835bb 100644
--- a/tests/auto/qtextcursor/tst_qtextcursor.cpp
+++ b/tests/auto/qtextcursor/tst_qtextcursor.cpp
@@ -151,6 +151,7 @@ private slots:
void cursorPositionWithBlockUndoAndRedo();
void cursorPositionWithBlockUndoAndRedo2();
+ void cursorPositionWithBlockUndoAndRedo3();
private:
int blockCount();
@@ -226,9 +227,9 @@ void tst_QTextCursor::navigation1()
cursor.movePosition(QTextCursor::End);
cursor.insertBlock();
{
- int oldPos = cursor.position();
- cursor.movePosition(QTextCursor::End);
- QVERIFY(cursor.position() == oldPos);
+ int oldPos = cursor.position();
+ cursor.movePosition(QTextCursor::End);
+ QVERIFY(cursor.position() == oldPos);
}
QVERIFY(cursor.atBlockStart());
QVERIFY(cursor.position() == 9);
@@ -1699,8 +1700,10 @@ void tst_QTextCursor::adjustCursorsOnInsert()
QCOMPARE(selection.position(), posAfter+1);
doc->undo();
+ selection.setKeepPositionOnInsert(true);
cursor.setPosition(posAfter);
cursor.insertText(QLatin1String("x"));
+ selection.setKeepPositionOnInsert(false);
QCOMPARE(selection.anchor(), posBefore);
QCOMPARE(selection.position(), posAfter);
doc->undo();
@@ -1754,9 +1757,9 @@ void tst_QTextCursor::adjustCursorsOnInsert()
void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo()
{
cursor.insertText("AAAABBBBCCCCDDDD");
- cursor.beginEditBlock();
cursor.setPosition(12);
int cursorPositionBefore = cursor.position();
+ cursor.beginEditBlock();
cursor.insertText("*");
cursor.setPosition(8);
cursor.insertText("*");
@@ -1812,5 +1815,20 @@ void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo2()
QCOMPARE(cursor.position(), cursorPositionBefore);
}
+void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo3()
+{
+ // verify that it's the position of the beginEditBlock that counts, and not the last edit position
+ cursor.insertText("AAAABBBB");
+ int cursorPositionBefore = cursor.position();
+ cursor.beginEditBlock();
+ cursor.setPosition(4);
+ QVERIFY(cursor.position() != cursorPositionBefore);
+ cursor.insertText("*");
+ cursor.endEditBlock();
+ QCOMPARE(cursor.position(), 5);
+ doc->undo(&cursor);
+ QCOMPARE(cursor.position(), cursorPositionBefore);
+}
+
QTEST_MAIN(tst_QTextCursor)
#include "tst_qtextcursor.moc"
diff --git a/tests/auto/qtransform/tst_qtransform.cpp b/tests/auto/qtransform/tst_qtransform.cpp
index a3ded8e..c784b3a 100644
--- a/tests/auto/qtransform/tst_qtransform.cpp
+++ b/tests/auto/qtransform/tst_qtransform.cpp
@@ -85,6 +85,7 @@ private slots:
void inverted();
void projectivePathMapping();
void mapInt();
+ void mapPathWithPoint();
private:
void mapping_data();
@@ -793,6 +794,13 @@ void tst_QTransform::mapInt()
QCOMPARE(y, 10);
}
+void tst_QTransform::mapPathWithPoint()
+{
+ QPainterPath p(QPointF(10, 10));
+ p = QTransform::fromTranslate(10, 10).map(p);
+ QCOMPARE(p.currentPosition(), QPointF(20, 20));
+}
+
QTEST_APPLESS_MAIN(tst_QTransform)
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 5d47aed..d76bbfa 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -385,6 +385,7 @@ private slots:
void setGraphicsEffect();
void destroyBackingStore();
+ void destroyBackingStoreWhenHidden();
void activateWindow();
@@ -403,6 +404,10 @@ private slots:
void taskQTBUG_7532_tabOrderWithFocusProxy();
void movedAndResizedAttributes();
+ void childAt();
+#ifdef Q_WS_MAC
+ void childAt_unifiedToolBar();
+#endif
private:
bool ensureScreenSize(int width, int height);
@@ -9499,9 +9504,7 @@ void tst_QWidget::destroyBackingStore()
QTRY_VERIFY(w.numPaintEvents > 0);
w.reset();
w.update();
- delete qt_widget_private(&w)->topData()->backingStore;
- qt_widget_private(&w)->topData()->backingStore = 0;
- qt_widget_private(&w)->topData()->backingStore = new QWidgetBackingStore(&w);
+ qt_widget_private(&w)->topData()->backingStore.create(&w);
w.update();
QApplication::processEvents();
@@ -9519,6 +9522,252 @@ void tst_QWidget::destroyBackingStore()
#endif
}
+// Helper function
+QWidgetBackingStore* backingStore(QWidget &widget)
+{
+ QWidgetBackingStore *backingStore = 0;
+#ifdef QT_BUILD_INTERNAL
+ if (QTLWExtra *topExtra = qt_widget_private(&widget)->maybeTopData())
+ backingStore = topExtra->backingStore.data();
+#endif
+ return backingStore;
+}
+
+// Wait for a condition to be true, timing out after 1 second
+// This is used following calls to QWidget::show() and QWidget::hide(), which are
+// expected to asynchronously trigger native window visibility events.
+#define WAIT_AND_VERIFY(condition) \
+ do { \
+ QTime start = QTime::currentTime(); \
+ while (!(condition) && (start.elapsed() < 1000)) { \
+ qApp->processEvents(); \
+ QTest::qWait(50); \
+ } \
+ if (!QTest::qVerify((condition), #condition, "", __FILE__, __LINE__)) \
+ return; \
+ } while (0)
+
+void tst_QWidget::destroyBackingStoreWhenHidden()
+{
+#ifndef QT_BUILD_INTERNAL
+ QSKIP("Test step requires access to Q_AUTOTEST_EXPORT", SkipAll);
+#endif
+
+#ifndef Q_OS_SYMBIAN
+ QSKIP("Only Symbian destroys backing store when native window becomes invisible", SkipAll);
+#endif
+
+ testWidget->hide();
+ QTest::qWait(1000);
+
+ // 1. Single top-level QWidget
+ {
+ QWidget w;
+ w.setAutoFillBackground(true);
+ w.setPalette(Qt::yellow);
+ w.setGeometry(0, 0, 100, 100);
+ w.show();
+ QTest::qWaitForWindowShown(&w);
+ QVERIFY(0 != backingStore(w));
+
+ w.hide();
+ WAIT_AND_VERIFY(0 == backingStore(w));
+
+ w.show();
+ QTest::qWaitForWindowShown(&w);
+ QVERIFY(0 != backingStore(w));
+ }
+
+ // 2. Two top-level widgets
+ {
+ QWidget w1;
+ w1.setGeometry(0, 0, 100, 100);
+ w1.setAutoFillBackground(true);
+ w1.setPalette(Qt::red);
+ w1.show();
+ QTest::qWaitForWindowShown(&w1);
+ QVERIFY(0 != backingStore(w1));
+
+ QWidget w2;
+ w2.setGeometry(w1.geometry());
+ w1.setAutoFillBackground(true);
+ w1.setPalette(Qt::blue);
+ w2.show();
+ QTest::qWaitForWindowShown(&w2);
+ QVERIFY(0 != backingStore(w2));
+
+ // Check that w1 deleted its backing store when obscured by w2
+ QVERIFY(0 == backingStore(w1));
+
+ w2.move(w2.pos() + QPoint(10, 10));
+
+ // Check that w1 recreates its backing store when partially revealed
+ WAIT_AND_VERIFY(0 != backingStore(w1));
+ }
+
+ // 3. Native child widget
+ {
+ QWidget parent;
+ parent.setGeometry(0, 0, 100, 100);
+ parent.setAutoFillBackground(true);
+ parent.setPalette(Qt::yellow);
+
+ QWidget child(&parent);
+ child.setAutoFillBackground(true);
+ child.setPalette(Qt::green);
+
+ QVBoxLayout layout(&parent);
+ layout.setContentsMargins(10, 10, 10, 10);
+ layout.addWidget(&child);
+ parent.setLayout(&layout);
+
+ child.winId();
+
+ parent.show();
+ QTest::qWaitForWindowShown(&parent);
+
+ // Check that child window does not obscure parent window
+ QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Native child widget should share parent's backing store
+ QWidgetBackingStore *const parentBs = backingStore(parent);
+ QVERIFY(0 != parentBs);
+ QVERIFY(0 == backingStore(child));
+
+ // Set margins to zero so that child widget totally obscures parent
+ layout.setContentsMargins(0, 0, 0, 0);
+
+ WAIT_AND_VERIFY(parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Backing store should remain unchanged despite child window obscuring
+ // parent window
+ QVERIFY(parentBs == backingStore(parent));
+ QVERIFY(0 == backingStore(child));
+ }
+
+ // 4. Alien child widget which is made full-screen
+ {
+ QWidget parent;
+ parent.setGeometry(0, 0, 100, 100);
+ parent.setAutoFillBackground(true);
+ parent.setPalette(Qt::red);
+
+ QWidget child(&parent);
+ child.setAutoFillBackground(true);
+ child.setPalette(Qt::blue);
+
+ QVBoxLayout layout(&parent);
+ layout.setContentsMargins(10, 10, 10, 10);
+ layout.addWidget(&child);
+ parent.setLayout(&layout);
+
+ parent.show();
+ QTest::qWaitForWindowShown(&parent);
+
+ // Check that child window does not obscure parent window
+ QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Native child widget should share parent's backing store
+ QVERIFY(0 != backingStore(parent));
+ QVERIFY(0 == backingStore(child));
+
+ // Make child widget full screen
+ child.setWindowFlags((child.windowFlags() | Qt::Window) ^ Qt::SubWindow);
+ child.setWindowState(child.windowState() | Qt::WindowFullScreen);
+ child.show();
+ QTest::qWaitForWindowShown(&child);
+
+ // Check that child window obscures parent window
+ QVERIFY(parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Now that extent of child widget goes beyond parent's extent,
+ // a new backing store should be created for the child widget.
+ QVERIFY(0 != backingStore(child));
+
+ // Parent is obscured, therefore its backing store should be destroyed
+ QVERIFY(0 == backingStore(parent));
+
+ // Disable full screen
+ child.setWindowFlags(child.windowFlags() ^ (Qt::Window | Qt::SubWindow));
+ child.setWindowState(child.windowState() ^ Qt::WindowFullScreen);
+ child.show();
+ QTest::qWaitForWindowShown(&child);
+
+ // Check that parent is now visible again
+ QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Native child widget should once again share parent's backing store
+ QVERIFY(0 != backingStore(parent));
+ QEXPECT_FAIL("", "QTBUG-10643", Continue);
+ QVERIFY(0 == backingStore(child));
+ }
+
+ // 5. Native child widget which is made full-screen
+ {
+ QWidget parent;
+ parent.setGeometry(0, 0, 100, 100);
+ parent.setAutoFillBackground(true);
+ parent.setPalette(Qt::red);
+
+ QWidget child(&parent);
+ child.setAutoFillBackground(true);
+ child.setPalette(Qt::blue);
+
+ QVBoxLayout layout(&parent);
+ layout.setContentsMargins(10, 10, 10, 10);
+ layout.addWidget(&child);
+ parent.setLayout(&layout);
+
+ child.winId();
+
+ parent.show();
+ QTest::qWaitForWindowShown(&parent);
+
+ // Check that child window does not obscure parent window
+ QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Native child widget should share parent's backing store
+ QVERIFY(0 != backingStore(parent));
+ QVERIFY(0 == backingStore(child));
+
+ // Make child widget full screen
+ child.setWindowFlags((child.windowFlags() | Qt::Window) ^ Qt::SubWindow);
+ child.setWindowState(child.windowState() | Qt::WindowFullScreen);
+ child.show();
+ QTest::qWaitForWindowShown(&child);
+
+ // Ensure that 'window hidden' event is received by parent
+ qApp->processEvents();
+
+ // Check that child window obscures parent window
+ QVERIFY(parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Now that extent of child widget goes beyond parent's extent,
+ // a new backing store should be created for the child widget.
+ QVERIFY(0 != backingStore(child));
+
+ // Parent is obscured, therefore its backing store should be destroyed
+ QEXPECT_FAIL("", "QTBUG-10643", Continue);
+ QVERIFY(0 == backingStore(parent));
+
+ // Disable full screen
+ child.setWindowFlags(child.windowFlags() ^ (Qt::Window | Qt::SubWindow));
+ child.setWindowState(child.windowState() ^ Qt::WindowFullScreen);
+ child.show();
+ QTest::qWaitForWindowShown(&child);
+
+ // Check that parent is now visible again
+ QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+
+ // Native child widget should once again share parent's backing store
+ QVERIFY(0 != backingStore(parent));
+ QEXPECT_FAIL("", "QTBUG-10643", Continue);
+ QVERIFY(0 == backingStore(child));
+ }
+}
+
+#undef WAIT_AND_VERIFY
+
void tst_QWidget::rectOutsideCoordinatesLimit_task144779()
{
#ifdef Q_OS_WINCE_WM
@@ -10000,15 +10249,12 @@ class scrollWidgetWBS : public QWidget
public:
void deleteBackingStore()
{
- if (static_cast<QWidgetPrivate*>(d_ptr.data())->maybeBackingStore()) {
- delete static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStore;
- static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStore = 0;
- }
+ static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStore.destroy();
}
void enableBackingStore()
{
if (!static_cast<QWidgetPrivate*>(d_ptr.data())->maybeBackingStore()) {
- static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStore = new QWidgetBackingStore(this);
+ static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStore.create(this);
static_cast<QWidgetPrivate*>(d_ptr.data())->invalidateBuffer(this->rect());
repaint();
}
@@ -10105,5 +10351,98 @@ void tst_QWidget::movedAndResizedAttributes()
#endif
}
+void tst_QWidget::childAt()
+{
+ QWidget parent(0, Qt::FramelessWindowHint);
+ parent.resize(200, 200);
+
+ QWidget *child = new QWidget(&parent);
+ child->setPalette(Qt::red);
+ child->setAutoFillBackground(true);
+ child->setGeometry(20, 20, 160, 160);
+
+ QWidget *grandChild = new QWidget(child);
+ grandChild->setPalette(Qt::blue);
+ grandChild->setAutoFillBackground(true);
+ grandChild->setGeometry(-20, -20, 220, 220);
+
+ QVERIFY(!parent.childAt(19, 19));
+ QVERIFY(!parent.childAt(180, 180));
+ QCOMPARE(parent.childAt(20, 20), grandChild);
+ QCOMPARE(parent.childAt(179, 179), grandChild);
+
+ grandChild->setAttribute(Qt::WA_TransparentForMouseEvents);
+ QCOMPARE(parent.childAt(20, 20), child);
+ QCOMPARE(parent.childAt(179, 179), child);
+ grandChild->setAttribute(Qt::WA_TransparentForMouseEvents, false);
+
+ child->setMask(QRect(50, 50, 60, 60));
+
+ QVERIFY(!parent.childAt(69, 69));
+ QVERIFY(!parent.childAt(130, 130));
+ QCOMPARE(parent.childAt(70, 70), grandChild);
+ QCOMPARE(parent.childAt(129, 129), grandChild);
+
+ child->setAttribute(Qt::WA_MouseNoMask);
+ QCOMPARE(parent.childAt(69, 69), grandChild);
+ QCOMPARE(parent.childAt(130, 130), grandChild);
+ child->setAttribute(Qt::WA_MouseNoMask, false);
+
+ grandChild->setAttribute(Qt::WA_TransparentForMouseEvents);
+ QCOMPARE(parent.childAt(70, 70), child);
+ QCOMPARE(parent.childAt(129, 129), child);
+ grandChild->setAttribute(Qt::WA_TransparentForMouseEvents, false);
+
+ grandChild->setMask(QRect(80, 80, 40, 40));
+
+ QCOMPARE(parent.childAt(79, 79), child);
+ QCOMPARE(parent.childAt(120, 120), child);
+ QCOMPARE(parent.childAt(80, 80), grandChild);
+ QCOMPARE(parent.childAt(119, 119), grandChild);
+
+ grandChild->setAttribute(Qt::WA_MouseNoMask);
+
+ QCOMPARE(parent.childAt(79, 79), grandChild);
+ QCOMPARE(parent.childAt(120, 120), grandChild);
+}
+
+#ifdef Q_WS_MAC
+void tst_QWidget::childAt_unifiedToolBar()
+{
+ QLabel *label = new QLabel(QLatin1String("foo"));
+ QToolBar *toolBar = new QToolBar;
+ toolBar->addWidget(new QLabel("dummy"));
+ toolBar->addWidget(label);
+
+ QMainWindow mainWindow;
+ mainWindow.addToolBar(toolBar);
+ mainWindow.show();
+
+ // Calculate the top-left corner of the tool bar and the label (in mainWindow's coordinates).
+ QPoint labelTopLeft = label->mapTo(&mainWindow, QPoint());
+ QPoint toolBarTopLeft = toolBar->mapTo(&mainWindow, QPoint());
+
+ QCOMPARE(mainWindow.childAt(toolBarTopLeft), static_cast<QWidget *>(toolBar));
+ QCOMPARE(mainWindow.childAt(labelTopLeft), static_cast<QWidget *>(label));
+
+ // Enable unified tool bars.
+ mainWindow.setUnifiedTitleAndToolBarOnMac(true);
+ QTest::qWait(50);
+
+ // The tool bar is now in the "non-client" area of QMainWindow, i.e.
+ // outside the mainWindow's rect(), and since mapTo et al. doesn't work
+ // in that case (see commit 35667fd45ada49269a5987c235fdedfc43e92bb8),
+ // we use mapToGlobal/mapFromGlobal to re-calculate the corners.
+ QPoint oldToolBarTopLeft = toolBarTopLeft;
+ toolBarTopLeft = mainWindow.mapFromGlobal(toolBar->mapToGlobal(QPoint()));
+ QVERIFY(toolBarTopLeft != oldToolBarTopLeft);
+ QVERIFY(toolBarTopLeft.y() < 0);
+ labelTopLeft = mainWindow.mapFromGlobal(label->mapToGlobal(QPoint()));
+
+ QCOMPARE(mainWindow.childAt(toolBarTopLeft), static_cast<QWidget *>(toolBar));
+ QCOMPARE(mainWindow.childAt(labelTopLeft), static_cast<QWidget *>(label));
+}
+#endif
+
QTEST_MAIN(tst_QWidget)
#include "tst_qwidget.moc"
diff --git a/tools/linguist/lconvert/main.cpp b/tools/linguist/lconvert/main.cpp
index 543c405..094406c 100644
--- a/tools/linguist/lconvert/main.cpp
+++ b/tools/linguist/lconvert/main.cpp
@@ -240,7 +240,7 @@ int main(int argc, char *argv[])
tr.setLanguageCode(Translator::guessLanguageCodeFromFileName(inFiles[0].name));
if (!tr.load(inFiles[0].name, cd, inFiles[0].format)) {
- qWarning() << qPrintable(cd.error());
+ std::cerr << qPrintable(cd.error());
return 2;
}
tr.reportDuplicates(tr.resolveDuplicates(), inFiles[0].name, verbose);
@@ -248,7 +248,7 @@ int main(int argc, char *argv[])
for (int i = 1; i < inFiles.size(); ++i) {
Translator tr2;
if (!tr2.load(inFiles[i].name, cd, inFiles[i].format)) {
- qWarning() << qPrintable(cd.error());
+ std::cerr << qPrintable(cd.error());
return 2;
}
tr2.reportDuplicates(tr2.resolveDuplicates(), inFiles[i].name, verbose);
@@ -273,11 +273,11 @@ int main(int argc, char *argv[])
tr.normalizeTranslations(cd);
if (!cd.errors().isEmpty()) {
- qWarning("%s", qPrintable(cd.error()));
+ std::cerr << qPrintable(cd.error());
cd.clearErrors();
}
if (!tr.save(outFileName, cd, outFormat)) {
- qWarning("%s", qPrintable(cd.error()));
+ std::cerr << qPrintable(cd.error());
return 3;
}
return 0;
diff --git a/tools/linguist/lrelease/main.cpp b/tools/linguist/lrelease/main.cpp
index 266474e..b5cff90 100644
--- a/tools/linguist/lrelease/main.cpp
+++ b/tools/linguist/lrelease/main.cpp
@@ -55,6 +55,8 @@
#include <QtCore/QStringList>
#include <QtCore/QTextStream>
+#include <iostream>
+
QT_USE_NAMESPACE
#ifdef QT_BOOTSTRAPPED
@@ -106,7 +108,7 @@ static bool loadTsFile(Translator &tor, const QString &tsFileName, bool /* verbo
ConversionData cd;
bool ok = tor.load(tsFileName, cd, QLatin1String("auto"));
if (!ok) {
- qWarning("lrelease error: %s\n", qPrintable(cd.error()));
+ std::cerr << "lrelease error: " << qPrintable(cd.error());
} else {
if (!cd.errors().isEmpty())
printOut(cd.error());
@@ -130,8 +132,8 @@ static bool releaseTranslator(Translator &tor, const QString &qmFileName,
QFile file(qmFileName);
if (!file.open(QIODevice::WriteOnly)) {
- qWarning("lrelease error: cannot create '%s': %s\n",
- qPrintable(qmFileName), qPrintable(file.errorString()));
+ std::cerr << "lrelease error: cannot create '" << qPrintable(qmFileName)
+ << "': " << qPrintable(file.errorString()) << std::endl;
return false;
}
@@ -140,8 +142,8 @@ static bool releaseTranslator(Translator &tor, const QString &qmFileName,
file.close();
if (!ok) {
- qWarning("lrelease error: cannot save '%s': %s\n",
- qPrintable(qmFileName), qPrintable(cd.error()));
+ std::cerr << "lrelease error: cannot save '" << qPrintable(qmFileName)
+ << "': " << qPrintable(cd.error());
} else if (!cd.errors().isEmpty()) {
printOut(cd.error());
}
@@ -253,19 +255,20 @@ int main(int argc, char **argv)
visitor.setVerbose(cd.isVerbose());
if (!visitor.queryProFile(&pro)) {
- qWarning("lrelease error: cannot read project file '%s'.", qPrintable(inputFile));
+ std::cerr << "lrelease error: cannot read project file '"
+ << qPrintable(inputFile) << "'.\n";
continue;
}
if (!visitor.accept(&pro)) {
- qWarning("lrelease error: cannot process project file '%s'.", qPrintable(inputFile));
+ std::cerr << "lrelease error: cannot process project file '"
+ << qPrintable(inputFile) << "'.\n";
continue;
}
QStringList translations = visitor.values(QLatin1String("TRANSLATIONS"));
if (translations.isEmpty()) {
- qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
- " project file '%s'\n",
- qPrintable(inputFile));
+ std::cerr << "lrelease warning: Met no 'TRANSLATIONS' entry in project file '"
+ << qPrintable(inputFile) << "'\n";
} else {
QDir proDir(fi.absolutePath());
foreach (const QString &trans, translations)
diff --git a/tools/linguist/lupdate/cpp.cpp b/tools/linguist/lupdate/cpp.cpp
index db4bbca..b3e7e84 100644
--- a/tools/linguist/lupdate/cpp.cpp
+++ b/tools/linguist/lupdate/cpp.cpp
@@ -51,6 +51,8 @@
#include <QtCore/QTextCodec>
#include <QtCore/QTextStream>
+#include <iostream>
+
#include <ctype.h> // for isXXX()
QT_BEGIN_NAMESPACE
@@ -226,6 +228,8 @@ private:
int elseLine;
};
+ std::ostream &yyMsg(int line = 0);
+
uint getChar();
uint getToken();
bool getMacroArgs();
@@ -352,6 +356,12 @@ CppParser::CppParser(ParseResults *_results)
inDefine = false;
}
+
+std::ostream &CppParser::yyMsg(int line)
+{
+ return std::cerr << qPrintable(yyFileName) << ':' << (line ? line : yyLineNo) << ": ";
+}
+
void CppParser::setInput(const QString &in)
{
yyInStr = in;
@@ -613,9 +623,9 @@ uint CppParser::getToken()
if (yyBracketDepth != is.bracketDepth1st
|| yyBraceDepth != is.braceDepth1st
|| yyParenDepth != is.parenDepth1st)
- qWarning("%s:%d: Parenthesis/bracket/brace mismatch between "
- "#if and #else branches; using #if branch\n",
- qPrintable(yyFileName), is.elseLine);
+ yyMsg(is.elseLine)
+ << "Parenthesis/bracket/brace mismatch between "
+ "#if and #else branches; using #if branch\n";
} else {
is.bracketDepth1st = yyBracketDepth;
is.braceDepth1st = yyBraceDepth;
@@ -636,9 +646,9 @@ uint CppParser::getToken()
if (yyBracketDepth != is.bracketDepth1st
|| yyBraceDepth != is.braceDepth1st
|| yyParenDepth != is.parenDepth1st)
- qWarning("%s:%d: Parenthesis/brace mismatch between "
- "#if and #else branches; using #if branch\n",
- qPrintable(yyFileName), is.elseLine);
+ yyMsg(is.elseLine)
+ << "Parenthesis/brace mismatch between "
+ "#if and #else branches; using #if branch\n";
yyBracketDepth = is.bracketDepth1st;
yyBraceDepth = is.braceDepth1st;
yyParenDepth = is.parenDepth1st;
@@ -664,8 +674,7 @@ uint CppParser::getToken()
forever {
yyCh = getChar();
if (yyCh == EOF) {
- qWarning("%s:%d: Unterminated C++ comment\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Unterminated C++ comment\n";
break;
}
@@ -795,8 +804,7 @@ uint CppParser::getToken()
forever {
yyCh = getChar();
if (yyCh == EOF) {
- qWarning("%s:%d: Unterminated C++ comment\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Unterminated C++ comment\n";
break;
}
*ptr++ = yyCh;
@@ -829,8 +837,7 @@ uint CppParser::getToken()
yyWord.resize(ptr - (ushort *)yyWord.unicode());
if (yyCh != '"')
- qWarning("%s:%d: Unterminated C++ string\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Unterminated C++ string\n";
else
yyCh = getChar();
return Tok_String;
@@ -867,8 +874,7 @@ uint CppParser::getToken()
forever {
if (yyCh == EOF || yyCh == '\n') {
- qWarning("%s:%d: Unterminated C++ character\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Unterminated C++ character\n";
break;
}
yyCh = getChar();
@@ -887,9 +893,9 @@ uint CppParser::getToken()
case '}':
if (yyBraceDepth == yyMinBraceDepth) {
if (!inDefine)
- qWarning("%s:%d: Excess closing brace in C++ code"
- " (or abuse of the C++ preprocessor)\n",
- qPrintable(yyFileName), yyCurLineNo);
+ yyMsg(yyCurLineNo)
+ << "Excess closing brace in C++ code"
+ " (or abuse of the C++ preprocessor)\n";
// Avoid things getting messed up even more
yyCh = getChar();
return Tok_Semicolon;
@@ -905,9 +911,9 @@ uint CppParser::getToken()
return Tok_LeftParen;
case ')':
if (yyParenDepth == 0)
- qWarning("%s:%d: Excess closing parenthesis in C++ code"
- " (or abuse of the C++ preprocessor)\n",
- qPrintable(yyFileName), yyCurLineNo);
+ yyMsg(yyCurLineNo)
+ << "Excess closing parenthesis in C++ code"
+ " (or abuse of the C++ preprocessor)\n";
else
yyParenDepth--;
yyCh = getChar();
@@ -920,9 +926,9 @@ uint CppParser::getToken()
return Tok_LeftBracket;
case ']':
if (yyBracketDepth == 0)
- qWarning("%s:%d: Excess closing bracket in C++ code"
- " (or abuse of the C++ preprocessor)\n",
- qPrintable(yyFileName), yyCurLineNo);
+ yyMsg(yyCurLineNo)
+ << "Excess closing bracket in C++ code"
+ " (or abuse of the C++ preprocessor)\n";
else
yyBracketDepth--;
yyCh = getChar();
@@ -1290,8 +1296,7 @@ void CppParser::processInclude(const QString &file, ConversionData &cd,
QString cleanFile = QDir::cleanPath(file);
if (inclusions.contains(cleanFile)) {
- qWarning("%s:%d: circular inclusion of %s\n",
- qPrintable(yyFileName), yyLineNo, qPrintable(cleanFile));
+ yyMsg() << "circular inclusion of " << qPrintable(cleanFile) << std::endl;
return;
}
@@ -1315,9 +1320,9 @@ void CppParser::processInclude(const QString &file, ConversionData &cd,
QFile f(cleanFile);
if (!f.open(QIODevice::ReadOnly)) {
- qWarning("%s:%d: Cannot open %s: %s\n",
- qPrintable(yyFileName), yyLineNo,
- qPrintable(cleanFile), qPrintable(f.errorString()));
+ yyMsg()
+ << "Cannot open " << qPrintable(cleanFile) << ": "
+ << qPrintable(f.errorString()) << std::endl;
return;
}
@@ -1656,8 +1661,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
// Forward-declared class definitions can be namespaced.
NamespaceList nsl;
if (!fullyQualify(namespaces, quali, true, &nsl, 0)) {
- qWarning("%s:%d: Ignoring definition of undeclared qualified class\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Ignoring definition of undeclared qualified class\n";
break;
}
namespaceDepths.push(namespaces.count());
@@ -1757,8 +1761,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (!tor)
goto case_default;
if (!sourcetext.isEmpty())
- qWarning("%s:%d: //%% cannot be used with tr() / QT_TR_NOOP(). Ignoring\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "//%% cannot be used with tr() / QT_TR_NOOP(). Ignoring\n";
utf8 = (yyTok == Tok_trUtf8);
line = yyLineNo;
yyTok = getToken();
@@ -1779,10 +1782,9 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
QStringList unresolved;
if (!fullyQualify(namespaces, pendingContext, true, &functionContext, &unresolved)) {
functionContextUnresolved = unresolved.join(strColons);
- qWarning("%s:%d: Qualifying with unknown namespace/class %s::%s\n",
- qPrintable(yyFileName), yyLineNo,
- qPrintable(stringifyNamespace(functionContext)),
- qPrintable(unresolved.first()));
+ yyMsg() << "Qualifying with unknown namespace/class "
+ << qPrintable(stringifyNamespace(functionContext)) << "::"
+ << qPrintable(unresolved.first()) << std::endl;
}
pendingContext.clear();
}
@@ -1790,8 +1792,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (functionContextUnresolved.isEmpty()) {
int idx = functionContext.length();
if (idx < 2) {
- qWarning("%s:%d: tr() cannot be called without context\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "tr() cannot be called without context\n";
break;
}
Namespace *fctx;
@@ -1800,9 +1801,8 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
context = stringifyNamespace(functionContext);
fctx = findNamespace(functionContext)->classDef;
if (!fctx->complained) {
- qWarning("%s:%d: Class '%s' lacks Q_OBJECT macro\n",
- qPrintable(yyFileName), yyLineNo,
- qPrintable(context));
+ yyMsg() << "Class '" << qPrintable(context)
+ << "' lacks Q_OBJECT macro\n";
fctx->complained = true;
}
goto gotctx;
@@ -1830,9 +1830,8 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
int last = prefix.lastIndexOf(strColons);
QString className = prefix.mid(last == -1 ? 0 : last + 2);
if (!className.isEmpty() && className == functionName) {
- qWarning("%s::%d: It is not recommended to call tr() from within a constructor '%s::%s' ",
- qPrintable(yyFileName), yyLineNo,
- className.constData(), functionName.constData());
+ yyMsg() << "It is not recommended to call tr() from within a constructor '"
+ << qPrintable(className) << "::" << qPrintable(functionName) << "'\n";
}
#endif
prefix.chop(2);
@@ -1847,9 +1846,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
context = fctx->trQualification;
}
if (!fctx->hasTrFunctions && !fctx->complained) {
- qWarning("%s:%d: Class '%s' lacks Q_OBJECT macro\n",
- qPrintable(yyFileName), yyLineNo,
- qPrintable(context));
+ yyMsg() << "Class '" << qPrintable(context) << "' lacks Q_OBJECT macro\n";
fctx->complained = true;
}
} else {
@@ -1870,8 +1867,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (!tor)
goto case_default;
if (!sourcetext.isEmpty())
- qWarning("%s:%d: //%% cannot be used with translate() / QT_TRANSLATE_NOOP(). Ignoring\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "//%% cannot be used with translate() / QT_TRANSLATE_NOOP(). Ignoring\n";
utf8 = (yyTok == Tok_translateUtf8);
line = yyLineNo;
yyTok = getToken();
@@ -1925,8 +1921,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (!tor)
goto case_default;
if (!msgid.isEmpty())
- qWarning("%s:%d: //= cannot be used with qtTrId() / QT_TRID_NOOP(). Ignoring\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "//= cannot be used with qtTrId() / QT_TRID_NOOP(). Ignoring\n";
//utf8 = false; // Maybe use //%% or something like that
line = yyLineNo;
yyTok = getToken();
@@ -1993,15 +1988,13 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (isspace(c))
continue;
if (c != '"') {
- qWarning("%s:%d: Unexpected character in meta string\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Unexpected character in meta string\n";
break;
}
forever {
if (p >= yyWord.length()) {
whoops:
- qWarning("%s:%d: Unterminated meta string\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Unterminated meta string\n";
break;
}
c = yyWord.unicode()[p++].unicode();
@@ -2054,8 +2047,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
case Tok_Arrow:
yyTok = getToken();
if (yyTok == Tok_tr || yyTok == Tok_trUtf8)
- qWarning("%s:%d: Cannot invoke tr() like this\n",
- qPrintable(yyFileName), yyLineNo);
+ yyMsg() << "Cannot invoke tr() like this\n";
break;
case Tok_ColonColon:
if (yyBraceDepth == namespaceDepths.count() && yyParenDepth == 0 && !yyTokColonSeen)
@@ -2123,17 +2115,17 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
}
if (yyBraceDepth != 0)
- qWarning("%s:%d: Unbalanced opening brace in C++ code"
- " (or abuse of the C++ preprocessor)\n",
- qPrintable(yyFileName), yyBraceLineNo);
+ yyMsg(yyBraceLineNo)
+ << "Unbalanced opening brace in C++ code"
+ " (or abuse of the C++ preprocessor)\n";
else if (yyParenDepth != 0)
- qWarning("%s:%d: Unbalanced opening parenthesis in C++ code"
- " (or abuse of the C++ preprocessor)\n",
- qPrintable(yyFileName), yyParenLineNo);
+ yyMsg(yyParenLineNo)
+ << "Unbalanced opening parenthesis in C++ code"
+ " (or abuse of the C++ preprocessor)\n";
else if (yyBracketDepth != 0)
- qWarning("%s:%d: Unbalanced opening bracket in C++ code"
- " (or abuse of the C++ preprocessor)\n",
- qPrintable(yyFileName), yyBracketLineNo);
+ yyMsg(yyBracketLineNo)
+ << "Unbalanced opening bracket in C++ code"
+ " (or abuse of the C++ preprocessor)\n";
}
const ParseResults *CppParser::recordResults(bool isHeader)
diff --git a/tools/linguist/lupdate/java.cpp b/tools/linguist/lupdate/java.cpp
index 27988b04..dc66e2b 100644
--- a/tools/linguist/lupdate/java.cpp
+++ b/tools/linguist/lupdate/java.cpp
@@ -51,6 +51,8 @@
#include <QtCore/QString>
#include <QtCore/QTextCodec>
+#include <iostream>
+
#include <ctype.h>
QT_BEGIN_NAMESPACE
@@ -107,6 +109,11 @@ static QString yyPackage;
static QStack<Scope*> yyScope;
static QString yyDefaultContext;
+std::ostream &yyMsg(int line = 0)
+{
+ return std::cerr << qPrintable(yyFileName) << ':' << (line ? line : yyLineNo) << ": ";
+}
+
static QChar getChar()
{
if (yyInPos >= yyInStr.size())
@@ -189,10 +196,7 @@ static int getToken()
while ( !metAsterSlash ) {
yyCh = getChar();
if ( yyCh == EOF ) {
- qFatal( "%s: Unterminated Java comment starting at"
- " line %d\n",
- qPrintable(yyFileName), yyLineNo );
-
+ yyMsg() << "Unterminated Java comment.\n";
return Tok_Comment;
}
@@ -228,8 +232,8 @@ static int getToken()
else {
int sub(yyCh.toLower().toAscii() - 87);
if( sub > 15 || sub < 10) {
- qFatal( "%s:%d: Invalid Unicode",
- qPrintable(yyFileName), yyLineNo );
+ yyMsg() << "Invalid Unicode value.\n";
+ break;
}
unicode += sub;
}
@@ -251,8 +255,7 @@ static int getToken()
}
if ( yyCh != QLatin1Char('"') )
- qFatal( "%s:%d: Unterminated string",
- qPrintable(yyFileName), yyLineNo );
+ yyMsg() << "Unterminated string.\n";
yyCh = getChar();
@@ -365,9 +368,8 @@ static bool matchString( QString &s )
if (yyTok == Tok_String)
s += yyString;
else {
- qWarning( "%s:%d: String used in translation can only contain strings"
- " concatenated with other strings, not expressions or numbers.",
- qPrintable(yyFileName), yyLineNo );
+ yyMsg() << "String used in translation can contain only literals"
+ " concatenated with other literals, not expressions or numbers.\n";
return false;
}
yyTok = getToken();
@@ -475,8 +477,8 @@ static void parse( Translator *tor )
yyScope.push(new Scope(yyIdent, Scope::Clazz, yyLineNo));
}
else {
- qFatal( "%s:%d: Class must be followed by a classname",
- qPrintable(yyFileName), yyLineNo );
+ yyMsg() << "'class' must be followed by a class name.\n";
+ break;
}
while (!match(Tok_LeftBrace)) {
yyTok = getToken();
@@ -547,8 +549,7 @@ static void parse( Translator *tor )
case Tok_RightBrace:
if ( yyScope.isEmpty() ) {
- qFatal( "%s:%d: Unbalanced right brace in Java code\n",
- qPrintable(yyFileName), yyLineNo );
+ yyMsg() << "Excess closing brace.\n";
}
else
delete (yyScope.pop());
@@ -577,8 +578,7 @@ static void parse( Translator *tor )
yyPackage.append(QLatin1String("."));
break;
default:
- qFatal( "%s:%d: Package keyword should be followed by com.package.name;",
- qPrintable(yyFileName), yyLineNo );
+ yyMsg() << "'package' must be followed by package name.\n";
break;
}
yyTok = getToken();
@@ -591,11 +591,9 @@ static void parse( Translator *tor )
}
if ( !yyScope.isEmpty() )
- qFatal( "%s:%d: Unbalanced braces in Java code\n",
- qPrintable(yyFileName), yyScope.top()->line );
+ yyMsg(yyScope.top()->line) << "Unbalanced opening brace.\n";
else if ( yyParenDepth != 0 )
- qFatal( "%s:%d: Unbalanced parentheses in Java code\n",
- qPrintable(yyFileName), yyParenLineNo );
+ yyMsg(yyParenLineNo) << "Unbalanced opening parenthesis.\n";
}
diff --git a/tools/linguist/lupdate/main.cpp b/tools/linguist/lupdate/main.cpp
index 6c9157a..a575192 100644
--- a/tools/linguist/lupdate/main.cpp
+++ b/tools/linguist/lupdate/main.cpp
@@ -57,16 +57,15 @@
static QString m_defaultExtensions;
-static void printErr(const QString & out)
-{
- qWarning("%s", qPrintable(out));
-}
-
static void printOut(const QString & out)
{
std::cerr << qPrintable(out);
}
+class LU {
+ Q_DECLARE_TR_FUNCTIONS(LUpdate)
+};
+
static void recursiveFileInfoList(const QDir &dir,
const QSet<QString> &nameFilters, QDir::Filters filter,
QFileInfoList *fileinfolist)
@@ -150,24 +149,25 @@ static void updateTsFiles(const Translator &fetchedTor, const QStringList &tsFil
cd.m_sortContexts = !(options & NoSort);
if (QFile(fileName).exists()) {
if (!tor.load(fileName, cd, QLatin1String("auto"))) {
- printErr(cd.error());
+ printOut(cd.error());
*fail = true;
continue;
}
tor.resolveDuplicates();
cd.clearErrors();
if (setCodec && fetchedTor.codec() != tor.codec())
- qWarning("lupdate warning: Codec for tr() '%s' disagrees with "
- "existing file's codec '%s'. Expect trouble.",
- fetchedTor.codecName().constData(), tor.codecName().constData());
+ printOut(LU::tr("lupdate warning: Codec for tr() '%1' disagrees with"
+ " existing file's codec '%2'. Expect trouble.\n")
+ .arg(QString::fromLatin1(fetchedTor.codecName()),
+ QString::fromLatin1(tor.codecName())));
if (!targetLanguage.isEmpty() && targetLanguage != tor.languageCode())
- qWarning("lupdate warning: Specified target language '%s' disagrees with "
- "existing file's language '%s'. Ignoring.",
- qPrintable(targetLanguage), qPrintable(tor.languageCode()));
+ printOut(LU::tr("lupdate warning: Specified target language '%1' disagrees with"
+ " existing file's language '%2'. Ignoring.\n")
+ .arg(targetLanguage, tor.languageCode()));
if (!sourceLanguage.isEmpty() && sourceLanguage != tor.sourceLanguageCode())
- qWarning("lupdate warning: Specified source language '%s' disagrees with "
- "existing file's language '%s'. Ignoring.",
- qPrintable(sourceLanguage), qPrintable(tor.sourceLanguageCode()));
+ printOut(LU::tr("lupdate warning: Specified source language '%1' disagrees with"
+ " existing file's language '%2'. Ignoring.\n")
+ .arg(sourceLanguage, tor.sourceLanguageCode()));
} else {
if (setCodec)
tor.setCodec(fetchedTor.codec());
@@ -210,11 +210,11 @@ static void updateTsFiles(const Translator &fetchedTor, const QStringList &tsFil
out.normalizeTranslations(cd);
if (!cd.errors().isEmpty()) {
- printErr(cd.error());
+ printOut(cd.error());
cd.clearErrors();
}
if (!out.save(fileName, cd, QLatin1String("auto"))) {
- printErr(cd.error());
+ printOut(cd.error());
*fail = true;
}
}
@@ -296,8 +296,9 @@ static void processProject(
if (!tmp.isEmpty()) {
codecForSource = tmp.last().toLatin1();
if (!QTextCodec::codecForName(codecForSource)) {
- qWarning("lupdate warning: Codec for source '%s' is invalid. "
- "Falling back to codec for tr().", codecForSource.constData());
+ printOut(LU::tr("lupdate warning: Codec for source '%1' is invalid."
+ " Falling back to codec for tr().\n")
+ .arg(QString::fromLatin1(codecForSource)));
codecForSource.clear();
}
}
@@ -452,7 +453,7 @@ int main(int argc, char **argv)
} else if (arg == QLatin1String("-target-language")) {
++i;
if (i == argc) {
- qWarning("The option -target-language requires a parameter.");
+ printOut(LU::tr("The option -target-language requires a parameter.\n"));
return 1;
}
targetLanguage = args[i];
@@ -460,7 +461,7 @@ int main(int argc, char **argv)
} else if (arg == QLatin1String("-source-language")) {
++i;
if (i == argc) {
- qWarning("The option -source-language requires a parameter.");
+ printOut(LU::tr("The option -source-language requires a parameter.\n"));
return 1;
}
sourceLanguage = args[i];
@@ -468,7 +469,7 @@ int main(int argc, char **argv)
} else if (arg == QLatin1String("-disable-heuristic")) {
++i;
if (i == argc) {
- qWarning("The option -disable-heuristic requires a parameter.");
+ printOut(LU::tr("The option -disable-heuristic requires a parameter.\n"));
return 1;
}
arg = args[i];
@@ -479,14 +480,14 @@ int main(int argc, char **argv)
} else if (arg == QLatin1String("number")) {
options &= ~HeuristicNumber;
} else {
- qWarning("Invalid heuristic name passed to -disable-heuristic.");
+ printOut(LU::tr("Invalid heuristic name passed to -disable-heuristic.\n"));
return 1;
}
continue;
} else if (arg == QLatin1String("-locations")) {
++i;
if (i == argc) {
- qWarning("The option -locations requires a parameter.");
+ printOut(LU::tr("The option -locations requires a parameter.\n"));
return 1;
}
if (args[i] == QLatin1String("none")) {
@@ -496,7 +497,7 @@ int main(int argc, char **argv)
} else if (args[i] == QLatin1String("absolute")) {
options |= AbsoluteLocations;
} else {
- qWarning("Invalid parameter passed to -locations.");
+ printOut(LU::tr("Invalid parameter passed to -locations.\n"));
return 1;
}
continue;
@@ -522,7 +523,7 @@ int main(int argc, char **argv)
} else if (arg == QLatin1String("-codecfortr")) {
++i;
if (i == argc) {
- qWarning("The -codecfortr option should be followed by a codec name.");
+ printOut(LU::tr("The -codecfortr option should be followed by a codec name.\n"));
return 1;
}
codecForTr = args[i].toLatin1();
@@ -533,7 +534,7 @@ int main(int argc, char **argv)
} else if (arg == QLatin1String("-extensions")) {
++i;
if (i == argc) {
- qWarning("The -extensions option should be followed by an extension list.");
+ printOut(LU::tr("The -extensions option should be followed by an extension list.\n"));
return 1;
}
extensions = args[i];
@@ -541,7 +542,7 @@ int main(int argc, char **argv)
} else if (arg == QLatin1String("-pro")) {
++i;
if (i == argc) {
- qWarning("The -pro option should be followed by a filename of .pro file.");
+ printOut(LU::tr("The -pro option should be followed by a filename of .pro file.\n"));
return 1;
}
proFiles += args[i];
@@ -551,7 +552,7 @@ int main(int argc, char **argv)
if (arg.length() == 2) {
++i;
if (i == argc) {
- qWarning("The -I option should be followed by a path.");
+ printOut(LU::tr("The -I option should be followed by a path.\n"));
return 1;
}
includePath += args[i];
@@ -560,7 +561,7 @@ int main(int argc, char **argv)
}
continue;
} else if (arg.startsWith(QLatin1String("-")) && arg != QLatin1String("-")) {
- qWarning("Unrecognized option '%s'", qPrintable(arg));
+ printOut(LU::tr("Unrecognized option '%1'.\n").arg(arg));
return 1;
}
@@ -568,8 +569,8 @@ int main(int argc, char **argv)
if (arg.startsWith(QLatin1String("@"))) {
QFile lstFile(arg.mid(1));
if (!lstFile.open(QIODevice::ReadOnly)) {
- qWarning("lupdate error: List file '%s' is not readable",
- qPrintable(lstFile.fileName()));
+ printOut(LU::tr("lupdate error: List file '%1' is not readable.\n")
+ .arg(lstFile.fileName()));
return 1;
}
while (!lstFile.atEnd())
@@ -586,16 +587,16 @@ int main(int argc, char **argv)
if (!fi.exists() || fi.isWritable()) {
tsFileNames.append(QFileInfo(file).absoluteFilePath());
} else {
- qWarning("lupdate warning: For some reason, '%s' is not writable.\n",
- qPrintable(file));
+ printOut(LU::tr("lupdate warning: For some reason, '%1' is not writable.\n")
+ .arg(file));
}
found = true;
break;
}
}
if (!found) {
- qWarning("lupdate error: File '%s' has no recognized extension\n",
- qPrintable(file));
+ printOut(LU::tr("lupdate error: File '%1' has no recognized extension.\n")
+ .arg(file));
return 1;
}
}
@@ -604,7 +605,7 @@ int main(int argc, char **argv)
foreach (const QString &file, files) {
QFileInfo fi(file);
if (!fi.exists()) {
- qWarning("lupdate error: File '%s' does not exists\n", qPrintable(file));
+ printOut(LU::tr("lupdate error: File '%1' does not exist.\n").arg(file));
return 1;
}
if (file.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
@@ -612,7 +613,7 @@ int main(int argc, char **argv)
proFiles << file;
} else if (fi.isDir()) {
if (options & Verbose)
- printOut(QObject::tr("Scanning directory '%1'...").arg(file));
+ printOut(QObject::tr("Scanning directory '%1'...\n").arg(file));
QDir dir = QDir(fi.filePath());
projectRoots.insert(dir.absolutePath() + QLatin1Char('/'));
if (extensionsNameFilters.isEmpty()) {
@@ -650,6 +651,7 @@ int main(int argc, char **argv)
}
} else {
sourceFiles << QDir::cleanPath(fi.absoluteFilePath());;
+ projectRoots.insert(fi.absolutePath() + QLatin1Char('/'));
}
}
numFiles++;
@@ -662,16 +664,16 @@ int main(int argc, char **argv)
}
if (!targetLanguage.isEmpty() && tsFileNames.count() != 1)
- std::cerr << "lupdate warning: -target-language usually only "
- "makes sense with exactly one TS file.\n";
+ printOut(LU::tr("lupdate warning: -target-language usually only"
+ " makes sense with exactly one TS file.\n"));
if (!codecForTr.isEmpty() && tsFileNames.isEmpty())
- std::cerr << "lupdate warning: -codecfortr has no effect without -ts.\n";
+ printOut(LU::tr("lupdate warning: -codecfortr has no effect without -ts.\n"));
bool fail = false;
if (proFiles.isEmpty()) {
if (tsFileNames.isEmpty())
- std::cerr << "lupdate warning: no TS files specified. "
- "Only diagnostics will be produced.\n";
+ printOut(LU::tr("lupdate warning:"
+ " no TS files specified. Only diagnostics will be produced.\n"));
Translator fetchedTor;
ConversionData cd;
@@ -685,7 +687,8 @@ int main(int argc, char **argv)
sourceLanguage, targetLanguage, options, &fail);
} else {
if (!sourceFiles.isEmpty() || !includePath.isEmpty()) {
- qWarning("lupdate error: Both project and source files / include paths specified.\n");
+ printOut(LU::tr("lupdate error:"
+ " Both project and source files / include paths specified.\n"));
return 1;
}
if (!tsFileNames.isEmpty()) {
diff --git a/tools/linguist/lupdate/qscript.cpp b/tools/linguist/lupdate/qscript.cpp
index 33276e6..188ac36 100644
--- a/tools/linguist/lupdate/qscript.cpp
+++ b/tools/linguist/lupdate/qscript.cpp
@@ -53,6 +53,8 @@
#include <QtCore/qtextcodec.h>
#include <QtCore/qvariant.h>
+#include <iostream>
+
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
@@ -2214,13 +2216,13 @@ case 66: {
if ((name == QLatin1String("qsTranslate")) || (name == QLatin1String("QT_TRANSLATE_NOOP"))) {
QVariantList args = sym(2).toList();
if (args.size() < 2) {
- qWarning("%s:%d: %s() requires at least two arguments",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "() requires at least two arguments.\n";
} else {
if ((args.at(0).type() != QVariant::String)
|| (args.at(1).type() != QVariant::String)) {
- qWarning("%s:%d: %s(): both arguments must be literal strings",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "(): both arguments must be literal strings.\n";
} else {
QString context = args.at(0).toString();
QString text = args.at(1).toString();
@@ -2234,12 +2236,12 @@ case 66: {
} else if ((name == QLatin1String("qsTr")) || (name == QLatin1String("QT_TR_NOOP"))) {
QVariantList args = sym(2).toList();
if (args.size() < 1) {
- qWarning("%s:%d: %s() requires at least one argument",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "() requires at least one argument.\n";
} else {
if (args.at(0).type() != QVariant::String) {
- qWarning("%s:%d: %s(): text to translate must be a literal string",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "(): text to translate must be a literal string.\n";
} else {
QString context = QFileInfo(fileName).baseName();
QString text = args.at(0).toString();
@@ -2377,8 +2379,8 @@ bool loadQScript(Translator &translator, const QString &filename, ConversionData
lexer.setCode(code, /*lineNumber=*/1);
QScriptParser parser;
if (!parser.parse(&lexer, filename, &translator)) {
- qWarning("%s:%d: %s", qPrintable(filename), parser.errorLineNumber(),
- qPrintable(parser.errorMessage()));
+ std::cerr << qPrintable(filename) << ':' << parser.errorLineNumber() << ": "
+ << qPrintable(parser.errorMessage()) << std::endl;
return false;
}
diff --git a/tools/linguist/lupdate/qscript.g b/tools/linguist/lupdate/qscript.g
index a473500..857c58a 100644
--- a/tools/linguist/lupdate/qscript.g
+++ b/tools/linguist/lupdate/qscript.g
@@ -90,6 +90,8 @@
#include <QtCore/qtextcodec.h>
#include <QtCore/qvariant.h>
+#include <iostream>
+
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
@@ -106,7 +108,7 @@ static void recordMessage(
fileName, lineNo, QStringList(),
TranslatorMessage::Unfinished, plural);
msg.setExtraComment(extracomment.simplified());
- tor->replace(msg);
+ tor->extend(msg);
}
@@ -1630,13 +1632,13 @@ case $rule_number: {
if ((name == QLatin1String("qsTranslate")) || (name == QLatin1String("QT_TRANSLATE_NOOP"))) {
QVariantList args = sym(2).toList();
if (args.size() < 2) {
- qWarning("%s:%d: %s() requires at least two arguments",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "() requires at least two arguments.\n";
} else {
if ((args.at(0).type() != QVariant::String)
|| (args.at(1).type() != QVariant::String)) {
- qWarning("%s:%d: %s(): both arguments must be literal strings",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "(): both arguments must be literal strings.\n";
} else {
QString context = args.at(0).toString();
QString text = args.at(1).toString();
@@ -1650,12 +1652,12 @@ case $rule_number: {
} else if ((name == QLatin1String("qsTr")) || (name == QLatin1String("QT_TR_NOOP"))) {
QVariantList args = sym(2).toList();
if (args.size() < 1) {
- qWarning("%s:%d: %s() requires at least one argument",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "() requires at least one argument.\n";
} else {
if (args.at(0).type() != QVariant::String) {
- qWarning("%s:%d: %s(): text to translate must be a literal string",
- qPrintable(fileName), identLineNo, qPrintable(name));
+ std::cerr << qPrintable(fileName) << ':' << identLineNo << ": "
+ << qPrintable(name) << "(): text to translate must be a literal string.\n";
} else {
QString context = QFileInfo(fileName).baseName();
QString text = args.at(0).toString();
@@ -2009,8 +2011,8 @@ bool loadQScript(Translator &translator, const QString &filename, ConversionData
lexer.setCode(code, /*lineNumber=*/1);
QScriptParser parser;
if (!parser.parse(&lexer, filename, &translator)) {
- qWarning("%s:%d: %s", qPrintable(filename), parser.errorLineNumber(),
- qPrintable(parser.errorMessage()));
+ std::cerr << qPrintable(filename) << ':' << parser.errorLineNumber() << ": "
+ << qPrintable(parser.errorMessage()) << std::endl;
return false;
}
diff --git a/tools/linguist/phrasebooks/hungarian.qph b/tools/linguist/phrasebooks/hungarian.qph
new file mode 100644
index 0000000..0e1dd12
--- /dev/null
+++ b/tools/linguist/phrasebooks/hungarian.qph
@@ -0,0 +1,752 @@
+<!DOCTYPE QPH>
+<QPH language="hu_HU">
+<phrase>
+ <source>OK</source>
+ <target>OK</target>
+</phrase>
+<phrase>
+ <source>Bookmarks</source>
+ <target>Könyvjelzők</target>
+</phrase>
+<phrase>
+ <source>Remove</source>
+ <target>Törlés</target>
+</phrase>
+<phrase>
+ <source>New Folder</source>
+ <target>Új könyvtár</target>
+</phrase>
+<phrase>
+ <source>Add</source>
+ <target>Hozzáadás</target>
+</phrase>
+<phrase>
+ <source>Previous</source>
+ <target>Előző</target>
+</phrase>
+<phrase>
+ <source>Font</source>
+ <target>Betűtípus</target>
+</phrase>
+<phrase>
+ <source>Help</source>
+ <target>Segítség</target>
+</phrase>
+<phrase>
+ <source>Done</source>
+ <target>Kész</target>
+</phrase>
+<phrase>
+ <source>Install</source>
+ <target>Telepítés</target>
+</phrase>
+<phrase>
+ <source>Cancel</source>
+ <target>Mégsem</target>
+</phrase>
+<phrase>
+ <source>Installation Path:</source>
+ <target>Telepítési útvonal:</target>
+</phrase>
+<phrase>
+ <source>Index</source>
+ <target>Index</target>
+</phrase>
+<phrase>
+ <source>Contents</source>
+ <target>Tartalom</target>
+</phrase>
+<phrase>
+ <source>Search</source>
+ <target>Keresés</target>
+</phrase>
+<phrase>
+ <source>Print Preview...</source>
+ <target>Nyomtatási kép...</target>
+</phrase>
+<phrase>
+ <source>About...</source>
+ <target>Névjegy...</target>
+</phrase>
+<phrase>
+ <source>Toolbars</source>
+ <target>Eszköztárak</target>
+</phrase>
+<phrase>
+ <source>Address:</source>
+ <target>Cím:</target>
+</phrase>
+<phrase>
+ <source>Open Source Edition</source>
+ <target>Nyíltforrású kiadás</target>
+</phrase>
+<phrase>
+ <source>Yes</source>
+ <target>Igen</target>
+</phrase>
+<phrase>
+ <source>No</source>
+ <target>Nem</target>
+</phrase>
+<phrase>
+ <source>Apply</source>
+ <target>Alkalmaz</target>
+</phrase>
+<phrase>
+ <source>Ignore</source>
+ <target>Kihagyás</target>
+</phrase>
+<phrase>
+ <source>Abort</source>
+ <target>Megszakítás</target>
+</phrase>
+<phrase>
+ <source>Play</source>
+ <target>Lejátszás</target>
+</phrase>
+<phrase>
+ <source>Pause</source>
+ <target>Szünet</target>
+</phrase>
+<phrase>
+ <source>File</source>
+ <target>Fájl</target>
+ <definition>menu</definition>
+</phrase>
+<phrase>
+ <source>file</source>
+ <target>fájl</target>
+</phrase>
+<phrase>
+ <source>directory</source>
+ <target>könyvtár</target>
+</phrase>
+<phrase>
+ <source>Symlink</source>
+ <target>Szimbolikus link</target>
+</phrase>
+<phrase>
+ <source>Delete</source>
+ <target>Törlés</target>
+</phrase>
+<phrase>
+ <source>Rename</source>
+ <target>Átnevezés</target>
+</phrase>
+<phrase>
+ <source>Back</source>
+ <target>Vissza</target>
+</phrase>
+<phrase>
+ <source>Forward</source>
+ <target>Előre</target>
+</phrase>
+<phrase>
+ <source>Finish</source>
+ <target>Befejezés</target>
+</phrase>
+<phrase>
+ <source>Quit</source>
+ <target>Kilépés</target>
+</phrase>
+<phrase>
+ <source>Exit</source>
+ <target>Kilépés</target>
+</phrase>
+<phrase>
+ <source>Close</source>
+ <target>Bezárás</target>
+</phrase>
+<phrase>
+ <source>Close All</source>
+ <target>Mindent bezár</target>
+</phrase>
+<phrase>
+ <source>Error</source>
+ <target>Hiba</target>
+</phrase>
+<phrase>
+ <source>Warning</source>
+ <target>Figyelmeztetés</target>
+</phrase>
+<phrase>
+ <source>Information</source>
+ <target>Információ</target>
+</phrase>
+<phrase>
+ <source>Question</source>
+ <target>Kérdés</target>
+</phrase>
+<phrase>
+ <source>document</source>
+ <target>dokumentum</target>
+</phrase>
+<phrase>
+ <source>author</source>
+ <target>szerző</target>
+</phrase>
+<phrase>
+ <source>subsidiary(-ies)</source>
+ <target>leányvállalata(i)</target>
+</phrase>
+<phrase>
+ <source>Help</source>
+ <target>Súgó</target>
+</phrase>
+<phrase>
+ <source>Undo</source>
+ <target>Visszavonás</target>
+</phrase>
+<phrase>
+ <source>Redo</source>
+ <target>Újra</target>
+</phrase>
+<phrase>
+ <source>Open</source>
+ <target>Megnyitás</target>
+</phrase>
+<phrase>
+ <source>Save</source>
+ <target>Mentés</target>
+</phrase>
+<phrase>
+ <source>Save all</source>
+ <target>Mindet menti</target>
+</phrase>
+<phrase>
+ <source>click</source>
+ <target>kattintás</target>
+ <definition>noun</definition>
+</phrase>
+<phrase>
+ <source>click</source>
+ <target>kattintson</target>
+ <definition>ask</definition>
+</phrase>
+<phrase>
+ <source>Recent</source>
+ <target>Előző</target>
+ <definition>Recent files/Előző fájlok</definition>
+</phrase>
+<phrase>
+ <source>Window</source>
+ <target>Ablak</target>
+</phrase>
+<phrase>
+ <source>Cascade</source>
+ <target>Lépcsőzetes</target>
+</phrase>
+<phrase>
+ <source>Tile</source>
+ <target>Mozaikszerű</target>
+</phrase>
+<phrase>
+ <source>Game</source>
+ <target>Játék</target>
+</phrase>
+<phrase>
+ <source>New Game</source>
+ <target>Új játék</target>
+</phrase>
+<phrase>
+ <source>Untitled</source>
+ <target>Névtelen</target>
+</phrase>
+<phrase>
+ <source>Unknown error</source>
+ <target>Ismeretlen hiba</target>
+</phrase>
+<phrase>
+ <source>New Folder</source>
+ <target>Új mappa</target>
+</phrase>
+<phrase>
+ <source>folder</source>
+ <target>mappa</target>
+</phrase>
+<phrase>
+ <source>New Directory</source>
+ <target>Új könyvtár</target>
+</phrase>
+<phrase>
+ <source>unknown</source>
+ <target>ismeretlen</target>
+</phrase>
+<phrase>
+ <source>Copy</source>
+ <target>Másolás</target>
+</phrase>
+<phrase>
+ <source>Cut</source>
+ <target>Kivágás</target>
+</phrase>
+<phrase>
+ <source>Paste</source>
+ <target>Beillesztés</target>
+</phrase>
+<phrase>
+ <source>Paste special</source>
+ <target>Speciális beillesztés</target>
+</phrase>
+<phrase>
+ <source>Insert</source>
+ <target>Beszúrás</target>
+</phrase>
+<phrase>
+ <source>Copy here</source>
+ <target>Másolás ide</target>
+</phrase>
+<phrase>
+ <source>Minimize</source>
+ <target>Minimalizálás</target>
+</phrase>
+<phrase>
+ <source>Zoom</source>
+ <target>Nagyítás</target>
+</phrase>
+<phrase>
+ <source>&amp;Edit</source>
+ <target>S&amp;zerkesztés</target>
+</phrase>
+<phrase>
+ <source>&amp;View</source>
+ <target>&amp;Nézet</target>
+</phrase>
+<phrase>
+ <source>Application</source>
+ <target>Alkalmazás</target>
+</phrase>
+<phrase>
+ <source>Documentation</source>
+ <target>Dokumentáció</target>
+</phrase>
+<phrase>
+ <source>Network</source>
+ <target>Hálózat</target>
+</phrase>
+<phrase>
+ <source>Current Page</source>
+ <target>Aktuális oldal</target>
+</phrase>
+<phrase>
+ <source>Find</source>
+ <target>Keresés</target>
+</phrase>
+<phrase>
+ <source>Locale</source>
+ <target>Nyelv</target>
+</phrase>
+<phrase>
+ <source>Cannot open &apos;%1&apos;.</source>
+ <target>&apos;%1&apos; nem nyitható meg.</target>
+</phrase>
+<phrase>
+ <source>Cannot find the string &apos;%1&apos;.</source>
+ <target>A szöveg nem található: &apos;%1&apos;.</target>
+</phrase>
+<phrase>
+ <source>A file called &apos;%1&apos; already exists. Please choose another name.</source>
+ <target>&apos;%1&apos; nevű fájl már létezik. Válasszon egy másik nevet.</target>
+</phrase>
+<phrase>
+ <source>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</source>
+ <target>Ez a program abban a reményben került közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az ELADHATÓSÁGRA vagy VALAMELY CÉLRA VALÓ ALKALMAZHATÓSÁGRA való származtatott garanciát is beleértve.</target>
+ <definition>License text in most Qt programs</definition>
+</phrase>
+<phrase>
+ <source>Open Link</source>
+ <target>Link megnyitása</target>
+</phrase>
+<phrase>
+ <source>Next</source>
+ <target>Következő</target>
+</phrase>
+<phrase>
+ <source>Case Sensitive</source>
+ <target>Kis/nagybetű érzékeny</target>
+</phrase>
+<phrase>
+ <source>Whole words</source>
+ <target>Teljes szó</target>
+</phrase>
+<phrase>
+ <source>Open Link in New Tab</source>
+ <target>Link megnyitása új lapon</target>
+</phrase>
+<phrase>
+ <source>Download canceled.</source>
+ <target>Letöltés megszakítva.</target>
+</phrase>
+<phrase>
+ <source>The file %1 already exists. Do you want to overwrite it?</source>
+ <target>A(z) &apos;%1&apos; nevű fájl már létezik. Felülírja?</target>
+</phrase>
+<phrase>
+ <source>Qt Assistant</source>
+ <target>Qt Asszisztens</target>
+</phrase>
+<phrase>
+ <source>Preferences...</source>
+ <target>Beállítások...</target>
+</phrase>
+<phrase>
+ <source>&amp;File</source>
+ <target>&amp;Fájl</target>
+</phrase>
+<phrase>
+ <source>Browser</source>
+ <target>Böngésző</target>
+</phrase>
+<phrase>
+ <source>Filters</source>
+ <target>Szűrők</target>
+</phrase>
+<phrase>
+ <source>Delete Folder</source>
+ <target>Mappa törlése</target>
+</phrase>
+<phrase>
+ <source>Rename Folder</source>
+ <target>Mappa átnevezése</target>
+</phrase>
+<phrase>
+ <source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://www.trolltech.com/company/model.html&quot;&gt;www.trolltech.com/company/model.html&lt;/a&gt; for an overview of Qt licensing.</source>
+ <target>Amennyiben zárt forrású alkalmazás fejlesztéséhez kívánja a Qt-t felhasználni, szüksége lesz a Qt kereskedelmi verziójára. Kérem tekintse meg az &lt;tt&gt;http://www.trolltech.com/company/model.html&lt;/tt&gt; oldalt a Qt licenszelésének áttekintéséhez.</target>
+</phrase>
+<phrase>
+ <source>New Tab</source>
+ <target>Új fül</target>
+</phrase>
+<phrase>
+ <source>Close Tab</source>
+ <target>Fül bezárása</target>
+</phrase>
+<phrase>
+ <source>Close Other Tabs</source>
+ <target>A többi fül bezárása</target>
+</phrase>
+<phrase>
+ <source>True</source>
+ <target>Igaz</target>
+</phrase>
+<phrase>
+ <source>False</source>
+ <target>Hamis</target>
+</phrase>
+<phrase>
+ <source>Update</source>
+ <target>Frissítés</target>
+</phrase>
+<phrase>
+ <source>Normal</source>
+ <target>Normál</target>
+</phrase>
+<phrase>
+ <source>Bold</source>
+ <target>Félkövér</target>
+</phrase>
+<phrase>
+ <source>Italic</source>
+ <target>Dőlt</target>
+</phrase>
+<phrase>
+ <source>Greek</source>
+ <target>Görög</target>
+</phrase>
+<phrase>
+ <source>Cyrillic</source>
+ <target>Cirill</target>
+</phrase>
+<phrase>
+ <source>Armenian</source>
+ <target>Örmény</target>
+</phrase>
+<phrase>
+ <source>Hebrew</source>
+ <target>Héber</target>
+</phrase>
+<phrase>
+ <source>Arabic</source>
+ <target>Arab</target>
+</phrase>
+<phrase>
+ <source>Syriac</source>
+ <target>Szír</target>
+</phrase>
+<phrase>
+ <source>Permission denied</source>
+ <target>Hozzáférés megtagadva</target>
+</phrase>
+<phrase>
+ <source>Too many open files</source>
+ <target>Túl sok fájl van nyitva</target>
+</phrase>
+<phrase>
+ <source>No such file or directory</source>
+ <target>Nincs ilyen fájl vagy könyvtár</target>
+</phrase>
+<phrase>
+ <source>No space left on device</source>
+ <target>Nincs több hely az eszközön</target>
+</phrase>
+<phrase>
+ <source>Width:</source>
+ <target>Szélesség:</target>
+</phrase>
+<phrase>
+ <source>Height:</source>
+ <target>Magasság:</target>
+</phrase>
+<phrase>
+ <source>Margins</source>
+ <target>Margók</target>
+</phrase>
+<phrase>
+ <source>top margin</source>
+ <target>felső margó</target>
+</phrase>
+<phrase>
+ <source>left margin</source>
+ <target>bal margó</target>
+</phrase>
+<phrase>
+ <source>right margin</source>
+ <target>jobb margó</target>
+</phrase>
+<phrase>
+ <source>bottom margin</source>
+ <target>alsó margó</target>
+</phrase>
+<phrase>
+ <source>Next page</source>
+ <target>Következő oldal</target>
+</phrase>
+<phrase>
+ <source>Previous page</source>
+ <target>Előző oldal</target>
+</phrase>
+<phrase>
+ <source>First page</source>
+ <target>Első oldal</target>
+</phrase>
+<phrase>
+ <source>Last page</source>
+ <target>Utolsó oldal</target>
+</phrase>
+<phrase>
+ <source>Fit width</source>
+ <target>Szélesség igazítása</target>
+</phrase>
+<phrase>
+ <source>Fit page</source>
+ <target>Oldal igazítása</target>
+</phrase>
+<phrase>
+ <source>Zoom in</source>
+ <target>Nagyítás</target>
+</phrase>
+<phrase>
+ <source>Zoom out</source>
+ <target>Kicsinyítés</target>
+</phrase>
+<phrase>
+ <source>Portrait</source>
+ <target>Álló</target>
+</phrase>
+<phrase>
+ <source>Landscape</source>
+ <target>Fekvő</target>
+</phrase>
+<phrase>
+ <source>Print</source>
+ <target>Nyomtatás</target>
+</phrase>
+<phrase>
+ <source>Page setup</source>
+ <target>Oldalbeállítás</target>
+</phrase>
+<phrase>
+ <source>Color</source>
+ <target>Szín</target>
+</phrase>
+<phrase>
+ <source>Grayscale</source>
+ <target>Szürkeárnyalatos</target>
+</phrase>
+<phrase>
+ <source>None</source>
+ <target>Nincs</target>
+</phrase>
+<phrase>
+ <source>...</source>
+ <target>...</target>
+</phrase>
+<phrase>
+ <source>Menu</source>
+ <target>Menü</target>
+</phrase>
+<phrase>
+ <source>Keep</source>
+ <target>Meghagy</target>
+</phrase>
+<phrase>
+ <source>Pause</source>
+ <target>Megállít</target>
+</phrase>
+<phrase>
+ <source>Log</source>
+ <target>Napló</target>
+</phrase>
+<phrase>
+ <source>Mi&amp;nimize</source>
+ <target>&amp;Kis méret</target>
+</phrase>
+<phrase>
+ <source>Press</source>
+ <target>Nyomja meg</target>
+</phrase>
+<phrase>
+ <source>Submit</source>
+ <target>Küldés</target>
+</phrase>
+<phrase>
+ <source>Underline</source>
+ <target>Aláhúzott</target>
+</phrase>
+<phrase>
+ <source>Outline</source>
+ <target>Áthúzott</target>
+</phrase>
+<phrase>
+ <source>Direction</source>
+ <target>Irány</target>
+</phrase>
+<phrase>
+ <source>Configuration</source>
+ <target>Konfiguráció</target>
+</phrase>
+<phrase>
+ <source>None</source>
+ <target>Semmi</target>
+</phrase>
+<phrase>
+ <source>Save As...</source>
+ <target>Mentés másként...</target>
+</phrase>
+<phrase>
+ <source>Context</source>
+ <target>Környezet</target>
+</phrase>
+<phrase>
+ <source>Edit</source>
+ <target>Szerkesztés</target>
+</phrase>
+<phrase>
+ <source>Toolbar</source>
+ <target>Eszköztár</target>
+</phrase>
+<phrase>
+ <source>&amp;Print...</source>
+ <target>&amp;Nyomtatás...</target>
+</phrase>
+<phrase>
+ <source>E&amp;xit</source>
+ <target>&amp;Kilépés</target>
+</phrase>
+<phrase>
+ <source>Sidebar</source>
+ <target>Oldalsáv</target>
+</phrase>
+<phrase>
+ <source>Bookmark</source>
+ <target>Könyvjelző</target>
+</phrase>
+<phrase>
+ <source>Save As</source>
+ <target>Mentés másként</target>
+</phrase>
+<phrase>
+ <source>Select All</source>
+ <target>Összes kijelölése</target>
+</phrase>
+<phrase>
+ <source>Name</source>
+ <target>Név</target>
+</phrase>
+<phrase>
+ <source>Type</source>
+ <target>Típus</target>
+</phrase>
+<phrase>
+ <source>Date</source>
+ <target>Dátum</target>
+</phrase>
+<phrase>
+ <source>Name</source>
+ <target>Név</target>
+</phrase>
+<phrase>
+ <source>Unknown</source>
+ <target>Ismeretlen</target>
+</phrase>
+<phrase>
+ <source>Value</source>
+ <target>Érték</target>
+</phrase>
+<phrase>
+ <source>Default</source>
+ <target>Alapértelmezett</target>
+</phrase>
+<phrase>
+ <source>New</source>
+ <target>Új</target>
+</phrase>
+<phrase>
+ <source>Level</source>
+ <target>Szint</target>
+</phrase>
+<phrase>
+ <source>Location</source>
+ <target>Hely</target>
+</phrase>
+<phrase>
+ <source>Reload</source>
+ <target>Újratöltés</target>
+</phrase>
+<phrase>
+ <source>Pictures</source>
+ <target>Képek</target>
+</phrase>
+<phrase>
+ <source>Battery</source>
+ <target>Elem</target>
+</phrase>
+<phrase>
+ <source>No error</source>
+ <target>Nincs hiba</target>
+</phrase>
+<phrase>
+ <source>Whole words</source>
+ <target>Teljes szó</target>
+</phrase>
+<phrase>
+ <source>(Új bejegyzés)</source>
+ <target></target>
+</phrase>
+<phrase>
+ <source>Horizontal</source>
+ <target>Vízszintes</target>
+</phrase>
+<phrase>
+ <source>Enabled</source>
+ <target>Engedélyezve</target>
+</phrase>
+<phrase>
+ <source>Up</source>
+ <target>Fel</target>
+</phrase>
+<phrase>
+ <source>Down</source>
+ <target>Le</target>
+</phrase>
+</QPH>
diff --git a/tools/linguist/phrasebooks/russian.qph b/tools/linguist/phrasebooks/russian.qph
index ae1a9b9..750fda0 100644
--- a/tools/linguist/phrasebooks/russian.qph
+++ b/tools/linguist/phrasebooks/russian.qph
@@ -826,7 +826,7 @@
</phrase>
<phrase>
<source>slider</source>
- <target>ползунок</target>
+ <target>регулятор</target>
</phrase>
<phrase>
<source>spin box</source>
diff --git a/tools/linguist/shared/po.cpp b/tools/linguist/shared/po.cpp
index 99a8751..a692332 100644
--- a/tools/linguist/shared/po.cpp
+++ b/tools/linguist/shared/po.cpp
@@ -353,6 +353,29 @@ static void slurpComment(QByteArray &msg, const QList<QByteArray> &lines, int &
--l;
}
+static void splitContext(QByteArray *comment, QByteArray *context)
+{
+ char *data = comment->data();
+ int len = comment->size();
+ int sep = -1, j = 0;
+
+ for (int i = 0; i < len; i++, j++) {
+ if (data[i] == '~' && i + 1 < len)
+ i++;
+ else if (data[i] == '|')
+ sep = j;
+ data[j] = data[i];
+ }
+ if (sep >= 0) {
+ QByteArray tmp = comment->mid(sep + 1, j - sep - 1);
+ comment->truncate(sep);
+ *context = *comment;
+ *comment = tmp;
+ } else {
+ comment->truncate(j);
+ }
+}
+
static QString makePoHeader(const QString &str)
{
return QLatin1String("po-header-") + str.toLower().replace(QLatin1Char('-'), QLatin1Char('_'));
@@ -411,6 +434,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
lines.append(QByteArray());
int l = 0, lastCmtLine = -1;
+ bool qtContexts = false;
PoItem item;
for (; l != lines.size(); ++l) {
QByteArray line = lines.at(l);
@@ -437,7 +461,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
continue;
int idx = hdr.indexOf(':');
if (idx < 0) {
- cd.appendError(QString::fromLatin1("Unexpected PO header format '%1'\n")
+ cd.appendError(QString::fromLatin1("Unexpected PO header format '%1'")
.arg(QString::fromLatin1(hdr)));
error = true;
break;
@@ -449,6 +473,8 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
translator.setLanguageCode(QString::fromLatin1(hdrValue));
} else if (hdrName == "X-Source-Language") {
translator.setSourceLanguageCode(QString::fromLatin1(hdrValue));
+ } else if (hdrName == "X-Qt-Contexts") {
+ qtContexts = (hdrValue == "true");
} else if (hdrName == "Plural-Forms") {
pluralForms = hdrValue;
} else if (hdrName == "MIME-Version") {
@@ -456,7 +482,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
} else if (hdrName == "Content-Type") {
if (cd.m_codecForSource.isEmpty()) {
if (!hdrValue.startsWith("text/plain; charset=")) {
- cd.appendError(QString::fromLatin1("Unexpected Content-Type header '%1'\n")
+ cd.appendError(QString::fromLatin1("Unexpected Content-Type header '%1'")
.arg(QString::fromLatin1(hdrValue)));
error = true;
// This will avoid a flood of conversion errors.
@@ -465,7 +491,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
QByteArray cod = hdrValue.mid(20);
QTextCodec *cdc = QTextCodec::codecForName(cod);
if (!cdc) {
- cd.appendError(QString::fromLatin1("Unsupported codec '%1'\n")
+ cd.appendError(QString::fromLatin1("Unsupported codec '%1'")
.arg(QString::fromLatin1(cod)));
error = true;
// This will avoid a flood of conversion errors.
@@ -477,7 +503,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
}
} else if (hdrName == "Content-Transfer-Encoding") {
if (hdrValue != "8bit") {
- cd.appendError(QString::fromLatin1("Unexpected Content-Transfer-Encoding '%1'\n")
+ cd.appendError(QString::fromLatin1("Unexpected Content-Transfer-Encoding '%1'")
.arg(QString::fromLatin1(hdrValue)));
return false;
}
@@ -498,7 +524,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
// Keep in sync with savePO
static const char * const dfltHdrs[] = {
"MIME-Version", "Content-Type", "Content-Transfer-Encoding",
- "Plural-Forms", "X-Language", "X-Source-Language"
+ "Plural-Forms", "X-Language", "X-Source-Language", "X-Qt-Contexts"
};
uint cdh = 0;
for (int cho = 0; cho < hdrOrder.length(); cho++) {
@@ -596,7 +622,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
slurpComment(item.translatorComments, lines, l);
break;
case '.':
- if (line.startsWith("#. ts-context ")) {
+ if (line.startsWith("#. ts-context ")) { // legacy
item.context = line.mid(14);
} else if (line.startsWith("#. ts-id ")) {
item.id = line.mid(9);
@@ -615,8 +641,10 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
codec->toUnicode(extra);
} else if (line.startsWith("#| msgctxt ")) {
item.oldTscomment = slurpEscapedString(lines, l, 11, "#| ", cd);
+ if (qtContexts)
+ splitContext(&item.oldTscomment, &item.context);
} else {
- cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'\n"))
+ cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'"))
.arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
}
@@ -633,13 +661,13 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
} else if (line.startsWith("#~ msgctxt ")) {
item.tscomment = slurpEscapedString(lines, l, 11, "#~ ", cd);
} else {
- cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'\n"))
+ cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'"))
.arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
}
break;
default:
- cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'\n"))
+ cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'"))
.arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
break;
@@ -647,6 +675,8 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
lastCmtLine = l;
} else if (line.startsWith("msgctxt ")) {
item.tscomment = slurpEscapedString(lines, l, 8, QByteArray(), cd);
+ if (qtContexts)
+ splitContext(&item.tscomment, &item.context);
} else if (line.startsWith("msgid ")) {
item.msgId = slurpEscapedString(lines, l, 6, QByteArray(), cd);
} else if (line.startsWith("msgid_plural ")) {
@@ -655,7 +685,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
item.extra[QLatin1String("po-msgid_plural")] = codec->toUnicode(extra);
item.isPlural = true;
} else {
- cd.appendError(QString(QLatin1String("PO-format error in line %1: '%2'\n"))
+ cd.appendError(QString(QLatin1String("PO-format error in line %1: '%2'"))
.arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
}
@@ -672,6 +702,16 @@ static void addPoHeader(Translator::ExtraData &headers, QStringList &hdrOrder,
headers[makePoHeader(qName)] = value;
}
+static QString escapeComment(const QString &in, bool escape)
+{
+ QString out = in;
+ if (escape) {
+ out.replace(QLatin1Char('~'), QLatin1String("~~"));
+ out.replace(QLatin1Char('|'), QLatin1String("~|"));
+ }
+ return out;
+}
+
bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
{
QString str_format = QLatin1String("-format");
@@ -680,6 +720,13 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
QTextStream out(&dev);
out.setCodec(cd.m_outputCodec.isEmpty() ? QByteArray("UTF-8") : cd.m_outputCodec);
+ bool qtContexts = false;
+ foreach (const TranslatorMessage &msg, translator.messages())
+ if (!msg.context().isEmpty()) {
+ qtContexts = true;
+ break;
+ }
+
QString cmt = translator.extra(QLatin1String("po-header_comment"));
if (!cmt.isEmpty())
out << cmt << '\n';
@@ -703,6 +750,8 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
}
if (!translator.sourceLanguageCode().isEmpty())
addPoHeader(headers, hdrOrder, "X-Source-Language", translator.sourceLanguageCode());
+ if (qtContexts)
+ addPoHeader(headers, hdrOrder, "X-Qt-Contexts", QLatin1String("true"));
QString hdrStr;
foreach (const QString &hdr, hdrOrder) {
hdrStr += hdr;
@@ -721,8 +770,6 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
if (!msg.extraComment().isEmpty())
out << poEscapedLines(QLatin1String("#."), true, msg.extraComment());
- if (!msg.context().isEmpty())
- out << QLatin1String("#. ts-context ") << msg.context() << '\n';
if (!msg.id().isEmpty())
out << QLatin1String("#. ts-id ") << msg.id() << '\n';
@@ -770,15 +817,21 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
QString prefix = QLatin1String("#| ");
if (!msg.oldComment().isEmpty())
- out << poEscapedString(prefix, QLatin1String("msgctxt"), noWrap, msg.oldComment());
+ out << poEscapedString(prefix, QLatin1String("msgctxt"), noWrap,
+ escapeComment(msg.oldComment(), qtContexts));
if (!msg.oldSourceText().isEmpty())
out << poEscapedString(prefix, QLatin1String("msgid"), noWrap, msg.oldSourceText());
QString plural = msg.extra(QLatin1String("po-old_msgid_plural"));
if (!plural.isEmpty())
out << poEscapedString(prefix, QLatin1String("msgid_plural"), noWrap, plural);
prefix = QLatin1String((msg.type() == TranslatorMessage::Obsolete) ? "#~ " : "");
- if (!msg.comment().isEmpty())
- out << poEscapedString(prefix, QLatin1String("msgctxt"), noWrap, msg.comment());
+ if (!msg.context().isEmpty())
+ out << poEscapedString(prefix, QLatin1String("msgctxt"), noWrap,
+ escapeComment(msg.context(), true) + QLatin1Char('|')
+ + escapeComment(msg.comment(), true));
+ else if (!msg.comment().isEmpty())
+ out << poEscapedString(prefix, QLatin1String("msgctxt"), noWrap,
+ escapeComment(msg.comment(), qtContexts));
out << poEscapedString(prefix, QLatin1String("msgid"), noWrap, msg.sourceText());
if (!msg.isPlural()) {
QString transl = msg.translation();
diff --git a/tools/linguist/shared/profileevaluator.cpp b/tools/linguist/shared/profileevaluator.cpp
index 5e1ee1f..a21408c 100644
--- a/tools/linguist/shared/profileevaluator.cpp
+++ b/tools/linguist/shared/profileevaluator.cpp
@@ -2594,19 +2594,19 @@ void ProFileEvaluator::addProperties(const QHash<QString, QString> &properties)
void ProFileEvaluator::logMessage(const QString &message)
{
if (d->m_verbose && !d->m_skipLevel)
- qWarning("%s", qPrintable(message));
+ fprintf(stderr, "%s\n", qPrintable(message));
}
void ProFileEvaluator::fileMessage(const QString &message)
{
if (!d->m_skipLevel)
- qWarning("%s", qPrintable(message));
+ fprintf(stderr, "%s\n", qPrintable(message));
}
void ProFileEvaluator::errorMessage(const QString &message)
{
if (!d->m_skipLevel)
- qWarning("%s", qPrintable(message));
+ fprintf(stderr, "%s\n", qPrintable(message));
}
void ProFileEvaluator::setVerbose(bool on)
diff --git a/tools/linguist/shared/qm.cpp b/tools/linguist/shared/qm.cpp
index e2c4f4a..6678943 100644
--- a/tools/linguist/shared/qm.cpp
+++ b/tools/linguist/shared/qm.cpp
@@ -773,11 +773,11 @@ static bool saveQM(const Translator &translator, QIODevice &dev, ConversionData
if (saved && cd.isVerbose()) {
int generatedCount = finished + unfinished;
cd.appendError(QCoreApplication::translate("LRelease",
- " Generated %n translation(s) (%1 finished and %2 unfinished)\n", 0,
+ " Generated %n translation(s) (%1 finished and %2 unfinished)", 0,
QCoreApplication::CodecForTr, generatedCount).arg(finished).arg(unfinished));
if (untranslated)
cd.appendError(QCoreApplication::translate("LRelease",
- " Ignored %n untranslated source text(s)\n", 0,
+ " Ignored %n untranslated source text(s)", 0,
QCoreApplication::CodecForTr, untranslated));
}
return saved;
diff --git a/tools/linguist/shared/translator.cpp b/tools/linguist/shared/translator.cpp
index c86a9dd..36af8da 100644
--- a/tools/linguist/shared/translator.cpp
+++ b/tools/linguist/shared/translator.cpp
@@ -43,6 +43,8 @@
#include "simtexth.h"
+#include <iostream>
+
#include <stdio.h>
#ifdef Q_OS_WIN
// required for _setmode, to avoid _O_TEXT streams...
@@ -586,22 +588,21 @@ void Translator::reportDuplicates(const Duplicates &dupes,
const QString &fileName, bool verbose)
{
if (!dupes.byId.isEmpty() || !dupes.byContents.isEmpty()) {
+ std::cerr << "Warning: dropping duplicate messages in '" << qPrintable(fileName);
if (!verbose) {
- qWarning("Warning: dropping duplicate messages in '%s'\n(try -verbose for more info).",
- qPrintable(fileName));
+ std::cerr << "'\n(try -verbose for more info).\n";
} else {
- qWarning("Warning: dropping duplicate messages in '%s':", qPrintable(fileName));
+ std::cerr << "':\n";
foreach (int i, dupes.byId)
- qWarning("\n* ID: %s", qPrintable(message(i).id()));
+ std::cerr << "\n* ID: " << qPrintable(message(i).id()) << std::endl;
foreach (int j, dupes.byContents) {
const TranslatorMessage &msg = message(j);
- qWarning("\n* Context: %s\n* Source: %s",
- qPrintable(msg.context()),
- qPrintable(msg.sourceText()));
+ std::cerr << "\n* Context: " << qPrintable(msg.context())
+ << "\n* Source: " << qPrintable(msg.sourceText()) << std::endl;
if (!msg.comment().isEmpty())
- qWarning("* Comment: %s", qPrintable(msg.comment()));
+ std::cerr << "* Comment: " << qPrintable(msg.comment()) << std::endl;
}
- qWarning();
+ std::cerr << std::endl;
}
}
}
@@ -688,7 +689,7 @@ void Translator::normalizeTranslations(ConversionData &cd)
cd.appendError(QLatin1String(
"Removed plural forms as the target language has less "
"forms.\nIf this sounds wrong, possibly the target language is "
- "not set or recognized.\n"));
+ "not set or recognized."));
}
QString Translator::guessLanguageCodeFromFileName(const QString &filename)
@@ -737,7 +738,7 @@ void Translator::setCodecName(const QByteArray &name)
QTextCodec *codec = QTextCodec::codecForName(name);
if (!codec) {
if (!name.isEmpty())
- qWarning("No QTextCodec for %s available. Using Latin1\n", name.constData());
+ std::cerr << "No QTextCodec for " << name.constData() << " available. Using Latin1.\n";
m_codec = QTextCodec::codecForName("ISO-8859-1");
} else {
m_codec = codec;
diff --git a/tools/linguist/shared/translator.h b/tools/linguist/shared/translator.h
index bb199f0..cfb2178 100644
--- a/tools/linguist/shared/translator.h
+++ b/tools/linguist/shared/translator.h
@@ -92,7 +92,7 @@ public:
bool sortContexts() const { return m_sortContexts; }
void appendError(const QString &error) { m_errors.append(error); }
- QString error() const { return m_errors.join(QLatin1String("\n")); }
+ QString error() const { return m_errors.isEmpty() ? QString() : m_errors.join(QLatin1String("\n")) + QLatin1Char('\n'); }
QStringList errors() const { return m_errors; }
void clearErrors() { m_errors.clear(); }
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
new file mode 100644
index 0000000..a64e8e7
--- /dev/null
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -0,0 +1,4773 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*
+ ditaxmlgenerator.cpp
+*/
+
+#include "codemarker.h"
+#include "codeparser.h"
+#include "helpprojectwriter.h"
+#include "ditaxmlgenerator.h"
+#include "node.h"
+#include "separator.h"
+#include "tree.h"
+#include <ctype.h>
+
+#include <qdebug.h>
+#include <qlist.h>
+#include <qiterator.h>
+#include <qtextcodec.h>
+
+QT_BEGIN_NAMESPACE
+
+#define COMMAND_VERSION Doc::alias("version")
+int DitaXmlGenerator::id = 0;
+
+QString DitaXmlGenerator::sinceTitles[] =
+ {
+ " New Namespaces",
+ " New Classes",
+ " New Member Functions",
+ " New Functions in Namespaces",
+ " New Global Functions",
+ " New Macros",
+ " New Enum Types",
+ " New Typedefs",
+ " New Properties",
+ " New Variables",
+ " New QML Elements",
+ " New Qml Properties",
+ " New Qml Signals",
+ " New Qml Methods",
+ ""
+ };
+
+static bool showBrokenLinks = false;
+
+static void addLink(const QString &linkTarget,
+ const QStringRef &nestedStuff,
+ QString *res)
+{
+ if (!linkTarget.isEmpty()) {
+ *res += "<a href=\"";
+ *res += linkTarget;
+ *res += "\">";
+ *res += nestedStuff;
+ *res += "</a>";
+ }
+ else {
+ *res += nestedStuff;
+ }
+}
+
+
+DitaXmlGenerator::DitaXmlGenerator()
+ : helpProjectWriter(0),
+ inLink(false),
+ inContents(false),
+ inSectionHeading(false),
+ inTableHeader(false),
+ numTableRows(0),
+ threeColumnEnumValueTable(true),
+ offlineDocs(true),
+ funcLeftParen("\\S(\\()"),
+ myTree(0),
+ slow(false),
+ obsoleteLinks(false)
+{
+}
+
+DitaXmlGenerator::~DitaXmlGenerator()
+{
+ if (helpProjectWriter)
+ delete helpProjectWriter;
+}
+
+void DitaXmlGenerator::initializeGenerator(const Config &config)
+{
+ static const struct {
+ const char *key;
+ const char *left;
+ const char *right;
+ } defaults[] = {
+ { ATOM_FORMATTING_BOLD, "<b>", "</b>" },
+ { ATOM_FORMATTING_INDEX, "<!--", "-->" },
+ { ATOM_FORMATTING_ITALIC, "<i>", "</i>" },
+ { ATOM_FORMATTING_PARAMETER, "<i>", "</i>" },
+ { ATOM_FORMATTING_SUBSCRIPT, "<sub>", "</sub>" },
+ { ATOM_FORMATTING_SUPERSCRIPT, "<sup>", "</sup>" },
+ { ATOM_FORMATTING_TELETYPE, "<tt>", "</tt>" },
+ { ATOM_FORMATTING_UNDERLINE, "<u>", "</u>" },
+ { 0, 0, 0 }
+ };
+
+ Generator::initializeGenerator(config);
+ obsoleteLinks = config.getBool(QLatin1String(CONFIG_OBSOLETELINKS));
+ setImageFileExtensions(QStringList() << "png" << "jpg" << "jpeg" << "gif");
+ int i = 0;
+ while (defaults[i].key) {
+ formattingLeftMap().insert(defaults[i].key, defaults[i].left);
+ formattingRightMap().insert(defaults[i].key, defaults[i].right);
+ i++;
+ }
+
+ style = config.getString(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_STYLE);
+ postHeader = config.getString(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_POSTHEADER);
+ postPostHeader = config.getString(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_POSTPOSTHEADER);
+ footer = config.getString(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_FOOTER);
+ address = config.getString(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_ADDRESS);
+ pleaseGenerateMacRef = config.getBool(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_GENERATEMACREFS);
+
+ project = config.getString(CONFIG_PROJECT);
+ offlineDocs = !config.getBool(CONFIG_ONLINE);
+ projectDescription = config.getString(CONFIG_DESCRIPTION);
+ if (projectDescription.isEmpty() && !project.isEmpty())
+ projectDescription = project + " Reference Documentation";
+
+ projectUrl = config.getString(CONFIG_URL);
+
+ outputEncoding = config.getString(CONFIG_OUTPUTENCODING);
+ if (outputEncoding.isEmpty())
+ outputEncoding = QLatin1String("ISO-8859-1");
+ outputCodec = QTextCodec::codecForName(outputEncoding.toLocal8Bit());
+
+ naturalLanguage = config.getString(CONFIG_NATURALLANGUAGE);
+ if (naturalLanguage.isEmpty())
+ naturalLanguage = QLatin1String("en");
+
+ QSet<QString> editionNames = config.subVars(CONFIG_EDITION);
+ QSet<QString>::ConstIterator edition = editionNames.begin();
+ while (edition != editionNames.end()) {
+ QString editionName = *edition;
+ QStringList editionModules = config.getStringList(CONFIG_EDITION +
+ Config::dot +
+ editionName +
+ Config::dot +
+ "modules");
+ QStringList editionGroups = config.getStringList(CONFIG_EDITION +
+ Config::dot +
+ editionName +
+ Config::dot +
+ "groups");
+
+ if (!editionModules.isEmpty())
+ editionModuleMap[editionName] = editionModules;
+ if (!editionGroups.isEmpty())
+ editionGroupMap[editionName] = editionGroups;
+
+ ++edition;
+ }
+
+ slow = config.getBool(CONFIG_SLOW);
+
+ stylesheets = config.getStringList(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_STYLESHEETS);
+ customHeadElements = config.getStringList(DitaXmlGenerator::format() +
+ Config::dot +
+ DITAXMLGENERATOR_CUSTOMHEADELEMENTS);
+ codeIndent = config.getInt(CONFIG_CODEINDENT);
+
+ helpProjectWriter = new HelpProjectWriter(config,
+ project.toLower() +
+ ".qhp");
+}
+
+void DitaXmlGenerator::terminateGenerator()
+{
+ Generator::terminateGenerator();
+}
+
+QString DitaXmlGenerator::format()
+{
+ return "DITAXML";
+}
+
+/*!
+ This is where the html files and dcf files are written.
+ \note The html file generation is done in the base class,
+ PageGenerator::generateTree().
+ */
+void DitaXmlGenerator::generateTree(const Tree *tree, CodeMarker *marker)
+{
+#if 0
+ // Copy the stylesheets from the directory containing the qdocconf file.
+ // ### This should be changed to use a special directory in doc/src.
+ QStringList::ConstIterator styleIter = stylesheets.begin();
+ QDir configPath = QDir::current();
+ while (styleIter != stylesheets.end()) {
+ QString filePath = configPath.absoluteFilePath(*styleIter);
+ Config::copyFile(Location(), filePath, filePath, outputDir());
+ ++styleIter;
+ }
+#endif
+ myTree = tree;
+ nonCompatClasses.clear();
+ mainClasses.clear();
+ compatClasses.clear();
+ obsoleteClasses.clear();
+ moduleClassMap.clear();
+ moduleNamespaceMap.clear();
+ funcIndex.clear();
+ legaleseTexts.clear();
+ serviceClasses.clear();
+ findAllClasses(tree->root());
+ findAllFunctions(tree->root());
+ findAllLegaleseTexts(tree->root());
+ findAllNamespaces(tree->root());
+#ifdef ZZZ_QDOC_QML
+ findAllQmlClasses(tree->root());
+#endif
+ findAllSince(tree->root());
+
+ PageGenerator::generateTree(tree, marker);
+
+ dcfClassesRoot.ref = "classes.html";
+ dcfClassesRoot.title = "Classes";
+ qSort(dcfClassesRoot.subsections);
+
+ dcfOverviewsRoot.ref = "overviews.html";
+ dcfOverviewsRoot.title = "Overviews";
+ qSort(dcfOverviewsRoot.subsections);
+
+ dcfExamplesRoot.ref = "examples.html";
+ dcfExamplesRoot.title = "Tutorial & Examples";
+ qSort(dcfExamplesRoot.subsections);
+
+ DcfSection qtRoot;
+ appendDcfSubSection(&qtRoot, dcfClassesRoot);
+ appendDcfSubSection(&qtRoot, dcfOverviewsRoot);
+ appendDcfSubSection(&qtRoot, dcfExamplesRoot);
+
+ generateDcf(project.toLower().simplified().replace(" ", "-"),
+ "index.html",
+ projectDescription, qtRoot);
+ generateDcf("designer",
+ "designer-manual.html",
+ "Qt Designer Manual",
+ dcfDesignerRoot);
+ generateDcf("linguist",
+ "linguist-manual.html",
+ "Qt Linguist Manual",
+ dcfLinguistRoot);
+ generateDcf("assistant",
+ "assistant-manual.html",
+ "Qt Assistant Manual",
+ dcfAssistantRoot);
+ generateDcf("qmake",
+ "qmake-manual.html",
+ "qmake Manual",
+ dcfQmakeRoot);
+
+ QString fileBase = project.toLower().simplified().replace(" ", "-");
+ generateIndex(fileBase, projectUrl, projectDescription);
+ generatePageIndex(outputDir() + "/" + fileBase + ".pageindex", marker);
+
+ helpProjectWriter->generate(myTree);
+}
+
+void DitaXmlGenerator::startText(const Node * /* relative */,
+ CodeMarker * /* marker */)
+{
+ inLink = false;
+ inContents = false;
+ inSectionHeading = false;
+ inTableHeader = false;
+ numTableRows = 0;
+ threeColumnEnumValueTable = true;
+ link.clear();
+ sectionNumber.clear();
+}
+
+/*!
+ Generate html from an instance of Atom.
+ */
+int DitaXmlGenerator::generateAtom(const Atom *atom,
+ const Node *relative,
+ CodeMarker *marker)
+{
+ int skipAhead = 0;
+ static bool in_para = false;
+
+ switch (atom->type()) {
+ case Atom::AbstractLeft:
+ break;
+ case Atom::AbstractRight:
+ break;
+ case Atom::AutoLink:
+ if (!inLink && !inContents && !inSectionHeading) {
+ const Node *node = 0;
+ QString link = getLink(atom, relative, marker, &node);
+ if (!link.isEmpty()) {
+ beginLink(link, node, relative, marker);
+ generateLink(atom, relative, marker);
+ endLink();
+ }
+ else {
+ out() << protectEnc(atom->string());
+ }
+ }
+ else {
+ out() << protectEnc(atom->string());
+ }
+ break;
+ case Atom::BaseName:
+ break;
+ case Atom::BriefLeft:
+ if (relative->type() == Node::Fake) {
+ skipAhead = skipAtoms(atom, Atom::BriefRight);
+ break;
+ }
+
+ out() << "<p>";
+ if (relative->type() == Node::Property ||
+ relative->type() == Node::Variable) {
+ QString str;
+ atom = atom->next();
+ while (atom != 0 && atom->type() != Atom::BriefRight) {
+ if (atom->type() == Atom::String ||
+ atom->type() == Atom::AutoLink)
+ str += atom->string();
+ skipAhead++;
+ atom = atom->next();
+ }
+ str[0] = str[0].toLower();
+ if (str.right(1) == ".")
+ str.truncate(str.length() - 1);
+ out() << "This ";
+ if (relative->type() == Node::Property)
+ out() << "property";
+ else
+ out() << "variable";
+ QStringList words = str.split(" ");
+ if (!(words.first() == "contains" || words.first() == "specifies"
+ || words.first() == "describes" || words.first() == "defines"
+ || words.first() == "holds" || words.first() == "determines"))
+ out() << " holds ";
+ else
+ out() << " ";
+ out() << str << ".";
+ }
+ break;
+ case Atom::BriefRight:
+ if (relative->type() != Node::Fake)
+ out() << "</p>\n";
+ break;
+ case Atom::C:
+ out() << formattingLeftMap()[ATOM_FORMATTING_TELETYPE];
+ if (inLink) {
+ out() << protectEnc(plainCode(atom->string()));
+ }
+ else {
+ out() << highlightedCode(atom->string(), marker, relative);
+ }
+ out() << formattingRightMap()[ATOM_FORMATTING_TELETYPE];
+ break;
+ case Atom::Code:
+ out() << "<pre class=\"highlightedCode\">"
+ << trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
+ marker,relative))
+ << "</pre>\n";
+ break;
+#ifdef QDOC_QML
+ case Atom::Qml:
+ out() << "<pre class=\"highlightedCode\">"
+ << trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
+ marker,relative))
+ << "</pre>\n";
+ break;
+#endif
+ case Atom::CodeNew:
+ out() << "<p>you can rewrite it as</p>\n"
+ << "<pre class=\"highlightedCode\">"
+ << trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
+ marker,relative))
+ << "</pre>\n";
+ break;
+ case Atom::CodeOld:
+ out() << "<p>For example, if you have code like</p>\n";
+ // fallthrough
+ case Atom::CodeBad:
+ out() << "<pre class=\"highlightedCode\">"
+ << trimmedTrailing(protectEnc(plainCode(indent(codeIndent,atom->string()))))
+ << "</pre>\n";
+ break;
+ case Atom::FootnoteLeft:
+ // ### For now
+ if (in_para) {
+ out() << "</p>\n";
+ in_para = false;
+ }
+ out() << "<!-- ";
+ break;
+ case Atom::FootnoteRight:
+ // ### For now
+ out() << "-->";
+ break;
+ case Atom::FormatElse:
+ case Atom::FormatEndif:
+ case Atom::FormatIf:
+ break;
+ case Atom::FormattingLeft:
+ out() << formattingLeftMap()[atom->string()];
+ if (atom->string() == ATOM_FORMATTING_PARAMETER) {
+ if (atom->next() != 0 && atom->next()->type() == Atom::String) {
+ QRegExp subscriptRegExp("([a-z]+)_([0-9n])");
+ if (subscriptRegExp.exactMatch(atom->next()->string())) {
+ out() << subscriptRegExp.cap(1) << "<sub>"
+ << subscriptRegExp.cap(2) << "</sub>";
+ skipAhead = 1;
+ }
+ }
+ }
+ break;
+ case Atom::FormattingRight:
+ if (atom->string() == ATOM_FORMATTING_LINK) {
+ endLink();
+ }
+ else {
+ out() << formattingRightMap()[atom->string()];
+ }
+ break;
+ case Atom::AnnotatedList:
+ {
+ QList<Node*> values = myTree->groups().values(atom->string());
+ NodeMap nodeMap;
+ for (int i = 0; i < values.size(); ++i) {
+ const Node* n = values.at(i);
+ if ((n->status() != Node::Internal) && (n->access() != Node::Private)) {
+ nodeMap.insert(n->nameForLists(),n);
+ }
+ }
+ generateAnnotatedList(relative, marker, nodeMap);
+ }
+ break;
+ case Atom::GeneratedList:
+ if (atom->string() == "annotatedclasses") {
+ generateAnnotatedList(relative, marker, nonCompatClasses);
+ }
+ else if (atom->string() == "classes") {
+ generateCompactList(relative, marker, nonCompatClasses, true);
+ }
+ else if (atom->string().contains("classesbymodule")) {
+ QString arg = atom->string().trimmed();
+ QString moduleName = atom->string().mid(atom->string().indexOf(
+ "classesbymodule") + 15).trimmed();
+ if (moduleClassMap.contains(moduleName))
+ generateAnnotatedList(relative, marker, moduleClassMap[moduleName]);
+ }
+ else if (atom->string().contains("classesbyedition")) {
+
+ QString arg = atom->string().trimmed();
+ QString editionName = atom->string().mid(atom->string().indexOf(
+ "classesbyedition") + 16).trimmed();
+
+ if (editionModuleMap.contains(editionName)) {
+
+ // Add all classes in the modules listed for that edition.
+ NodeMap editionClasses;
+ foreach (const QString &moduleName, editionModuleMap[editionName]) {
+ if (moduleClassMap.contains(moduleName))
+ editionClasses.unite(moduleClassMap[moduleName]);
+ }
+
+ // Add additional groups and remove groups of classes that
+ // should be excluded from the edition.
+
+ QMultiMap <QString, Node *> groups = myTree->groups();
+ foreach (const QString &groupName, editionGroupMap[editionName]) {
+ QList<Node *> groupClasses;
+ if (groupName.startsWith("-")) {
+ groupClasses = groups.values(groupName.mid(1));
+ foreach (const Node *node, groupClasses)
+ editionClasses.remove(node->name());
+ }
+ else {
+ groupClasses = groups.values(groupName);
+ foreach (const Node *node, groupClasses)
+ editionClasses.insert(node->name(), node);
+ }
+ }
+ generateAnnotatedList(relative, marker, editionClasses);
+ }
+ }
+ else if (atom->string() == "classhierarchy") {
+ generateClassHierarchy(relative, marker, nonCompatClasses);
+ }
+ else if (atom->string() == "compatclasses") {
+ generateCompactList(relative, marker, compatClasses, false);
+ }
+ else if (atom->string() == "obsoleteclasses") {
+ generateCompactList(relative, marker, obsoleteClasses, false);
+ }
+ else if (atom->string() == "functionindex") {
+ generateFunctionIndex(relative, marker);
+ }
+ else if (atom->string() == "legalese") {
+ generateLegaleseList(relative, marker);
+ }
+ else if (atom->string() == "mainclasses") {
+ generateCompactList(relative, marker, mainClasses, true);
+ }
+ else if (atom->string() == "services") {
+ generateCompactList(relative, marker, serviceClasses, false);
+ }
+ else if (atom->string() == "overviews") {
+ generateOverviewList(relative, marker);
+ }
+ else if (atom->string() == "namespaces") {
+ generateAnnotatedList(relative, marker, namespaceIndex);
+ }
+ else if (atom->string() == "related") {
+ const FakeNode *fake = static_cast<const FakeNode *>(relative);
+ if (fake && !fake->groupMembers().isEmpty()) {
+ NodeMap groupMembersMap;
+ foreach (const Node *node, fake->groupMembers()) {
+ if (node->type() == Node::Fake)
+ groupMembersMap[fullName(node, relative, marker)] = node;
+ }
+ generateAnnotatedList(fake, marker, groupMembersMap);
+ }
+ }
+ else if (atom->string() == "relatedinline") {
+ const FakeNode *fake = static_cast<const FakeNode *>(relative);
+ if (fake && !fake->groupMembers().isEmpty()) {
+ // Reverse the list into the original scan order.
+ // Should be sorted. But on what? It may not be a
+ // regular class or page definition.
+ QList<const Node *> list;
+ foreach (const Node *node, fake->groupMembers())
+ list.prepend(node);
+ foreach (const Node *node, list)
+ generateBody(node, marker);
+ }
+ }
+ break;
+ case Atom::SinceList:
+ {
+ NewSinceMaps::const_iterator nsmap;
+ nsmap = newSinceMaps.find(atom->string());
+ NewClassMaps::const_iterator ncmap;
+ ncmap = newClassMaps.find(atom->string());
+ NewClassMaps::const_iterator nqcmap;
+ nqcmap = newQmlClassMaps.find(atom->string());
+ if ((nsmap != newSinceMaps.constEnd()) && !nsmap.value().isEmpty()) {
+ QList<Section> sections;
+ QList<Section>::ConstIterator s;
+ for (int i=0; i<LastSinceType; ++i)
+ sections.append(Section(sinceTitle(i),QString(),QString(),QString()));
+
+ NodeMultiMap::const_iterator n = nsmap.value().constBegin();
+ while (n != nsmap.value().constEnd()) {
+ const Node* node = n.value();
+ switch (node->type()) {
+ case Node::Fake:
+ if (node->subType() == Node::QmlClass) {
+ sections[QmlClass].appendMember((Node*)node);
+ }
+ break;
+ case Node::Namespace:
+ sections[Namespace].appendMember((Node*)node);
+ break;
+ case Node::Class:
+ sections[Class].appendMember((Node*)node);
+ break;
+ case Node::Enum:
+ sections[Enum].appendMember((Node*)node);
+ break;
+ case Node::Typedef:
+ sections[Typedef].appendMember((Node*)node);
+ break;
+ case Node::Function: {
+ const FunctionNode* fn = static_cast<const FunctionNode*>(node);
+ if (fn->isMacro())
+ sections[Macro].appendMember((Node*)node);
+ else {
+ Node* p = fn->parent();
+ if (p) {
+ if (p->type() == Node::Class)
+ sections[MemberFunction].appendMember((Node*)node);
+ else if (p->type() == Node::Namespace) {
+ if (p->name().isEmpty())
+ sections[GlobalFunction].appendMember((Node*)node);
+ else
+ sections[NamespaceFunction].appendMember((Node*)node);
+ }
+ else
+ sections[GlobalFunction].appendMember((Node*)node);
+ }
+ else
+ sections[GlobalFunction].appendMember((Node*)node);
+ }
+ break;
+ }
+ case Node::Property:
+ sections[Property].appendMember((Node*)node);
+ break;
+ case Node::Variable:
+ sections[Variable].appendMember((Node*)node);
+ break;
+ case Node::QmlProperty:
+ sections[QmlProperty].appendMember((Node*)node);
+ break;
+ case Node::QmlSignal:
+ sections[QmlSignal].appendMember((Node*)node);
+ break;
+ case Node::QmlMethod:
+ sections[QmlMethod].appendMember((Node*)node);
+ break;
+ default:
+ break;
+ }
+ ++n;
+ }
+
+ /*
+ First generate the table of contents.
+ */
+ out() << "<ul>\n";
+ s = sections.constBegin();
+ while (s != sections.constEnd()) {
+ if (!(*s).members.isEmpty()) {
+
+ out() << "<li>"
+ << "<a href=\"#"
+ << Doc::canonicalTitle((*s).name)
+ << "\">"
+ << (*s).name
+ << "</a></li>\n";
+ }
+ ++s;
+ }
+ out() << "</ul>\n";
+
+ int idx = 0;
+ s = sections.constBegin();
+ while (s != sections.constEnd()) {
+ if (!(*s).members.isEmpty()) {
+ out() << "<a name=\""
+ << Doc::canonicalTitle((*s).name)
+ << "\"></a>\n";
+ out() << "<h3>" << protectEnc((*s).name) << "</h3>\n";
+ if (idx == Class)
+ generateCompactList(0, marker, ncmap.value(), false, QString("Q"));
+ else if (idx == QmlClass)
+ generateCompactList(0, marker, nqcmap.value(), false, QString("Q"));
+ else if (idx == MemberFunction) {
+ ParentMaps parentmaps;
+ ParentMaps::iterator pmap;
+ NodeList::const_iterator i = s->members.constBegin();
+ while (i != s->members.constEnd()) {
+ Node* p = (*i)->parent();
+ pmap = parentmaps.find(p);
+ if (pmap == parentmaps.end())
+ pmap = parentmaps.insert(p,NodeMultiMap());
+ pmap->insert((*i)->name(),(*i));
+ ++i;
+ }
+ pmap = parentmaps.begin();
+ while (pmap != parentmaps.end()) {
+ NodeList nlist = pmap->values();
+ out() << "<p>Class ";
+
+ out() << "<a href=\""
+ << linkForNode(pmap.key(), 0)
+ << "\">";
+ QStringList pieces = fullName(pmap.key(), 0, marker).split("::");
+ out() << protectEnc(pieces.last());
+ out() << "</a>" << ":</p>\n";
+
+ generateSection(nlist, 0, marker, CodeMarker::Summary);
+ out() << "<br/>";
+ ++pmap;
+ }
+ }
+ else
+ generateSection(s->members, 0, marker, CodeMarker::Summary);
+ }
+ ++idx;
+ ++s;
+ }
+ }
+ }
+ break;
+ case Atom::Image:
+ case Atom::InlineImage:
+ {
+ QString fileName = imageFileName(relative, atom->string());
+ QString text;
+ if (atom->next() != 0)
+ text = atom->next()->string();
+ if (atom->type() == Atom::Image)
+ out() << "<p class=\"centerAlign\">";
+ if (fileName.isEmpty()) {
+ out() << "<font color=\"red\">[Missing image "
+ << protectEnc(atom->string()) << "]</font>";
+ }
+ else {
+ out() << "<img src=\"" << protectEnc(fileName) << "\"";
+ if (!text.isEmpty())
+ out() << " alt=\"" << protectEnc(text) << "\"";
+ out() << " />";
+ helpProjectWriter->addExtraFile(fileName);
+ }
+ if (atom->type() == Atom::Image)
+ out() << "</p>";
+ }
+ break;
+ case Atom::ImageText:
+ break;
+ case Atom::LegaleseLeft:
+ out() << "<div class=\"LegaleseLeft\">";
+ break;
+ case Atom::LegaleseRight:
+ out() << "</div>";
+ break;
+ case Atom::LineBreak:
+ out() << "<br/>";
+ break;
+ case Atom::Link:
+ {
+ const Node *node = 0;
+ QString myLink = getLink(atom, relative, marker, &node);
+ if (myLink.isEmpty()) {
+ relative->doc().location().warning(tr("Cannot link to '%1' in %2")
+ .arg(atom->string())
+ .arg(marker->plainFullName(relative)));
+ }
+ beginLink(myLink, node, relative, marker);
+ skipAhead = 1;
+ }
+ break;
+ case Atom::LinkNode:
+ {
+ const Node *node = CodeMarker::nodeForString(atom->string());
+ beginLink(linkForNode(node, relative), node, relative, marker);
+ skipAhead = 1;
+ }
+ break;
+ case Atom::ListLeft:
+ if (in_para) {
+ out() << "</p>\n";
+ in_para = false;
+ }
+ if (atom->string() == ATOM_LIST_BULLET) {
+ out() << "<ul>\n";
+ }
+ else if (atom->string() == ATOM_LIST_TAG) {
+ out() << "<dl>\n";
+ }
+ else if (atom->string() == ATOM_LIST_VALUE) {
+ threeColumnEnumValueTable = isThreeColumnEnumValueTable(atom);
+ if (threeColumnEnumValueTable) {
+ out() << "<table class=\"valuelist\">";
+ // << "<tr>"
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+
+ out() << "<tr><th>Constant</th>"
+ << "<th>Value</th>"
+ << "<th>Description</th></tr>\n";
+ }
+ else {
+ out() << "<table class=\"valuelist\">"
+ << "<tr><th>Constant</th><th>Value</th></tr>\n";
+ }
+ }
+ else {
+ out() << "<ol type=";
+ if (atom->string() == ATOM_LIST_UPPERALPHA) {
+ out() << "\"A\"";
+ } /* why type? */
+ else if (atom->string() == ATOM_LIST_LOWERALPHA) {
+ out() << "\"a\"";
+ }
+ else if (atom->string() == ATOM_LIST_UPPERROMAN) {
+ out() << "\"I\"";
+ }
+ else if (atom->string() == ATOM_LIST_LOWERROMAN) {
+ out() << "\"i\"";
+ }
+ else { // (atom->string() == ATOM_LIST_NUMERIC)
+ out() << "\"1\"";
+ }
+ if (atom->next() != 0 && atom->next()->string().toInt() != 1)
+ out() << " start=\"" << atom->next()->string() << "\"";
+ out() << ">\n";
+ }
+ break;
+ case Atom::ListItemNumber:
+ break;
+ case Atom::ListTagLeft:
+ if (atom->string() == ATOM_LIST_TAG) {
+ out() << "<dt>";
+ }
+ else { // (atom->string() == ATOM_LIST_VALUE)
+ // ### Trenton
+
+ out() << "<tr><td class=\"topAlign\"><tt>"
+ << protectEnc(plainCode(marker->markedUpEnumValue(atom->next()->string(),
+ relative)))
+ << "</tt></td><td class=\" topAlign\">";
+
+ QString itemValue;
+ if (relative->type() == Node::Enum) {
+ const EnumNode *enume = static_cast<const EnumNode *>(relative);
+ itemValue = enume->itemValue(atom->next()->string());
+ }
+
+ if (itemValue.isEmpty())
+ out() << "?";
+ else
+ out() << "<tt>" << protectEnc(itemValue) << "</tt>";
+
+ skipAhead = 1;
+ }
+ break;
+ case Atom::ListTagRight:
+ if (atom->string() == ATOM_LIST_TAG)
+ out() << "</dt>\n";
+ break;
+ case Atom::ListItemLeft:
+ if (atom->string() == ATOM_LIST_TAG) {
+ out() << "<dd>";
+ }
+ else if (atom->string() == ATOM_LIST_VALUE) {
+ if (threeColumnEnumValueTable) {
+ out() << "</td><td class=\"topAlign\">";
+ if (matchAhead(atom, Atom::ListItemRight))
+ out() << "&nbsp;";
+ }
+ }
+ else {
+ out() << "<li>";
+ }
+ if (matchAhead(atom, Atom::ParaLeft))
+ skipAhead = 1;
+ break;
+ case Atom::ListItemRight:
+ if (atom->string() == ATOM_LIST_TAG) {
+ out() << "</dd>\n";
+ }
+ else if (atom->string() == ATOM_LIST_VALUE) {
+ out() << "</td></tr>\n";
+ }
+ else {
+ out() << "</li>\n";
+ }
+ break;
+ case Atom::ListRight:
+ if (atom->string() == ATOM_LIST_BULLET) {
+ out() << "</ul>\n";
+ }
+ else if (atom->string() == ATOM_LIST_TAG) {
+ out() << "</dl>\n";
+ }
+ else if (atom->string() == ATOM_LIST_VALUE) {
+ out() << "</table>\n";
+ }
+ else {
+ out() << "</ol>\n";
+ }
+ break;
+ case Atom::Nop:
+ break;
+ case Atom::ParaLeft:
+ out() << "<p>";
+ in_para = true;
+ break;
+ case Atom::ParaRight:
+ endLink();
+ if (in_para) {
+ out() << "</p>\n";
+ in_para = false;
+ }
+ //if (!matchAhead(atom, Atom::ListItemRight) && !matchAhead(atom, Atom::TableItemRight))
+ // out() << "</p>\n";
+ break;
+ case Atom::QuotationLeft:
+ out() << "<blockquote>";
+ break;
+ case Atom::QuotationRight:
+ out() << "</blockquote>\n";
+ break;
+ case Atom::RawString:
+ out() << atom->string();
+ break;
+ case Atom::SectionLeft:
+#if 0
+ {
+ int nextLevel = atom->string().toInt();
+ if (sectionNumber.size() < nextLevel) {
+ do {
+ sectionNumber.append("1");
+ } while (sectionNumber.size() < nextLevel);
+ }
+ else {
+ while (sectionNumber.size() > nextLevel) {
+ sectionNumber.removeLast();
+ }
+ sectionNumber.last() = QString::number(sectionNumber.last().toInt() + 1);
+ }
+ out() << "<a name=\"sec-" << sectionNumber.join("-") << "\"></a>\n";
+ }
+#else
+ out() << "<a name=\"" << Doc::canonicalTitle(Text::sectionHeading(atom).toString())
+ << "\"></a>\n";
+#endif
+ break;
+ case Atom::SectionRight:
+ break;
+ case Atom::SectionHeadingLeft:
+ out() << "<h" + QString::number(atom->string().toInt() + hOffset(relative)) + ">";
+ inSectionHeading = true;
+ break;
+ case Atom::SectionHeadingRight:
+ out() << "</h" + QString::number(atom->string().toInt() + hOffset(relative)) + ">\n";
+ inSectionHeading = false;
+ break;
+ case Atom::SidebarLeft:
+ break;
+ case Atom::SidebarRight:
+ break;
+ case Atom::String:
+ if (inLink && !inContents && !inSectionHeading) {
+ generateLink(atom, relative, marker);
+ }
+ else {
+ out() << protectEnc(atom->string());
+ }
+ break;
+ case Atom::TableLeft:
+ if (in_para) {
+ out() << "</p>\n";
+ in_para = false;
+ }
+ if (!atom->string().isEmpty()) {
+ if (atom->string().contains("%"))
+ out() << "<table class=\"generic\">\n "; // width=\"" << atom->string() << "\">\n ";
+ else {
+ out() << "<table class=\"generic\">\n";
+ }
+ }
+ else {
+ out() << "<table class=\"generic\">\n";
+ }
+ numTableRows = 0;
+ break;
+ case Atom::TableRight:
+ out() << "</table>\n";
+ break;
+ case Atom::TableHeaderLeft:
+ out() << "<thead><tr class=\"qt-style topAlign\">";
+ inTableHeader = true;
+ break;
+ case Atom::TableHeaderRight:
+ out() << "</tr>";
+ if (matchAhead(atom, Atom::TableHeaderLeft)) {
+ skipAhead = 1;
+ out() << "\n<tr class=\"qt-style topAlign\">";
+ }
+ else {
+ out() << "</thead>\n";
+ inTableHeader = false;
+ }
+ break;
+ case Atom::TableRowLeft:
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd topAlign\">";
+ else
+ out() << "<tr class=\"even topAlign\">";
+ break;
+ case Atom::TableRowRight:
+ out() << "</tr>\n";
+ break;
+ case Atom::TableItemLeft:
+ {
+ if (inTableHeader)
+ out() << "<th";
+ else
+ out() << "<td";
+
+ QStringList spans = atom->string().split(",");
+ if (spans.size() == 2) {
+ if (spans.at(0) != "1")
+ out() << " colspan=\"" << spans.at(0) << "\"";
+ if (spans.at(1) != "1")
+ out() << " rowspan=\"" << spans.at(1) << "\"";
+ if (inTableHeader)
+ out() << ">";
+ else
+ out() << "><p>";
+ }
+ if (matchAhead(atom, Atom::ParaLeft))
+ skipAhead = 1;
+ }
+ break;
+ case Atom::TableItemRight:
+ if (inTableHeader)
+ out() << "</th>";
+ else
+ out() << "</p></td>";
+ if (matchAhead(atom, Atom::ParaLeft))
+ skipAhead = 1;
+ break;
+ case Atom::TableOfContents:
+ {
+ int numColumns = 1;
+ const Node *node = relative;
+
+ Doc::SectioningUnit sectioningUnit = Doc::Section4;
+ QStringList params = atom->string().split(",");
+ QString columnText = params.at(0);
+ QStringList pieces = columnText.split(" ", QString::SkipEmptyParts);
+ if (pieces.size() >= 2) {
+ columnText = pieces.at(0);
+ pieces.pop_front();
+ QString path = pieces.join(" ").trimmed();
+ node = findNodeForTarget(path, relative, marker, atom);
+ }
+
+ if (params.size() == 2) {
+ numColumns = qMax(columnText.toInt(), numColumns);
+ sectioningUnit = (Doc::SectioningUnit)params.at(1).toInt();
+ }
+
+ if (node)
+ generateTableOfContents(node,
+ marker,
+ sectioningUnit,
+ numColumns,
+ relative);
+ }
+ break;
+ case Atom::Target:
+ out() << "<a name=\"" << Doc::canonicalTitle(atom->string()) << "\"></a>";
+ break;
+ case Atom::UnhandledFormat:
+ out() << "<b class=\"redFont\">&lt;Missing DITAXML&gt;</b>";
+ break;
+ case Atom::UnknownCommand:
+ out() << "<b class=\"redFont\"><code>\\" << protectEnc(atom->string())
+ << "</code></b>";
+ break;
+#ifdef QDOC_QML
+ case Atom::QmlText:
+ case Atom::EndQmlText:
+ // don't do anything with these. They are just tags.
+ break;
+#endif
+ default:
+ unknownAtom(atom);
+ }
+ return skipAhead;
+}
+
+/*!
+ Generate a reference page for a C++ class.
+ */
+void DitaXmlGenerator::generateClassLikeNode(const InnerNode *inner,
+ CodeMarker *marker)
+{
+ QList<Section> sections;
+ QList<Section>::ConstIterator s;
+
+ const ClassNode *classe = 0;
+ const NamespaceNode *namespasse = 0;
+
+ QString title;
+ QString rawTitle;
+ QString fullTitle;
+ if (inner->type() == Node::Namespace) {
+ namespasse = static_cast<const NamespaceNode *>(inner);
+ rawTitle = marker->plainName(inner);
+ fullTitle = marker->plainFullName(inner);
+ title = rawTitle + " Namespace";
+ }
+ else if (inner->type() == Node::Class) {
+ classe = static_cast<const ClassNode *>(inner);
+ rawTitle = marker->plainName(inner);
+ fullTitle = marker->plainFullName(inner);
+ title = rawTitle + " Class Reference";
+ }
+
+ DcfSection classSection;
+ classSection.title = title;
+ classSection.ref = linkForNode(inner, 0);
+ classSection.keywords += qMakePair(inner->name(), classSection.ref);
+
+ Text subtitleText;
+ if (rawTitle != fullTitle)
+ subtitleText << "(" << Atom(Atom::AutoLink, fullTitle) << ")"
+ << Atom(Atom::LineBreak);
+
+#if 0
+ // No longer used because the modeule name is a breadcrumb.
+ QString fixedModule = inner->moduleName();
+ if (fixedModule == "Qt3SupportLight")
+ fixedModule = "Qt3Support";
+ if (!fixedModule.isEmpty())
+ subtitleText << "[" << Atom(Atom::AutoLink, fixedModule) << " module]";
+
+ if (fixedModule.isEmpty()) {
+ QMultiMap<QString, QString> publicGroups = myTree->publicGroups();
+ QList<QString> groupNames = publicGroups.values(inner->name());
+ if (!groupNames.isEmpty()) {
+ qSort(groupNames.begin(), groupNames.end());
+ subtitleText << "[";
+ for (int j=0; j<groupNames.count(); j++) {
+ subtitleText << Atom(Atom::AutoLink, groupNames[j]);
+ if (j<groupNames.count()-1)
+ subtitleText <<", ";
+ }
+ subtitleText << "]";
+ }
+ }
+#endif
+
+ generateHeader(title, inner, marker);
+ sections = marker->sections(inner, CodeMarker::Summary, CodeMarker::Okay);
+ generateTableOfContents(inner,marker,&sections);
+ generateTitle(title, subtitleText, SmallSubTitle, inner, marker);
+
+#ifdef QDOC_QML
+ if (classe && !classe->qmlElement().isEmpty()) {
+ generateInstantiatedBy(classe,marker);
+ }
+#endif
+
+ generateBrief(inner, marker);
+ generateIncludes(inner, marker);
+ generateStatus(inner, marker);
+ if (classe) {
+ generateInherits(classe, marker);
+ generateInheritedBy(classe, marker);
+ }
+ generateThreadSafeness(inner, marker);
+ generateSince(inner, marker);
+
+ out() << "<ul>\n";
+
+ QString membersLink = generateListOfAllMemberFile(inner, marker);
+ if (!membersLink.isEmpty())
+ out() << "<li><a href=\"" << membersLink << "\">"
+ << "List of all members, including inherited members</a></li>\n";
+
+ QString obsoleteLink = generateLowStatusMemberFile(inner,
+ marker,
+ CodeMarker::Obsolete);
+ if (!obsoleteLink.isEmpty())
+ out() << "<li><a href=\"" << obsoleteLink << "\">"
+ << "Obsolete members</a></li>\n";
+
+ QString compatLink = generateLowStatusMemberFile(inner,
+ marker,
+ CodeMarker::Compat);
+ if (!compatLink.isEmpty())
+ out() << "<li><a href=\"" << compatLink << "\">"
+ << "Qt 3 support members</a></li>\n";
+
+ out() << "</ul>\n";
+
+ bool needOtherSection = false;
+
+ /*
+ sections is built above for the call to generateTableOfContents().
+ */
+ s = sections.begin();
+ while (s != sections.end()) {
+ if (s->members.isEmpty() && s->reimpMembers.isEmpty()) {
+ if (!s->inherited.isEmpty())
+ needOtherSection = true;
+ }
+ else {
+ if (!s->members.isEmpty()) {
+ out() << "<hr />\n";
+ out() << "<a name=\""
+ << registerRef((*s).name.toLower())
+ << "\"></a>\n";
+ out() << "<h2>" << protectEnc((*s).name) << "</h2>\n";
+ generateSection(s->members, inner, marker, CodeMarker::Summary);
+ }
+ if (!s->reimpMembers.isEmpty()) {
+ QString name = QString("Reimplemented ") + (*s).name;
+ out() << "<hr />\n";
+ out() << "<a name=\""
+ << registerRef(name.toLower())
+ << "\"></a>\n";
+ out() << "<h2>" << protectEnc(name) << "</h2>\n";
+ generateSection(s->reimpMembers, inner, marker, CodeMarker::Summary);
+ }
+
+ if (!s->inherited.isEmpty()) {
+ out() << "<ul>\n";
+ generateSectionInheritedList(*s, inner, marker, true);
+ out() << "</ul>\n";
+ }
+ }
+ ++s;
+ }
+
+ if (needOtherSection) {
+ out() << "<h3>Additional Inherited Members</h3>\n"
+ "<ul>\n";
+
+ s = sections.begin();
+ while (s != sections.end()) {
+ if (s->members.isEmpty() && !s->inherited.isEmpty())
+ generateSectionInheritedList(*s, inner, marker);
+ ++s;
+ }
+ out() << "</ul>\n";
+ }
+
+ out() << "<a name=\"" << registerRef("details") << "\"></a>\n";
+
+ if (!inner->doc().isEmpty()) {
+ out() << "<hr />\n"
+ << "<div class=\"descr\"/>\n" // QTBUG-9504
+ << "<h2>" << "Detailed Description" << "</h2>\n";
+ generateBody(inner, marker);
+ out() << "</div>\n"; // QTBUG-9504
+ generateAlsoList(inner, marker);
+ }
+
+ sections = marker->sections(inner, CodeMarker::Detailed, CodeMarker::Okay);
+ s = sections.begin();
+ while (s != sections.end()) {
+ out() << "<hr />\n";
+ if (!(*s).divClass.isEmpty())
+ out() << "<div class=\"" << (*s).divClass << "\"/>\n"; // QTBUG-9504
+ out() << "<h2>" << protectEnc((*s).name) << "</h2>\n";
+
+ NodeList::ConstIterator m = (*s).members.begin();
+ while (m != (*s).members.end()) {
+ if ((*m)->access() != Node::Private) { // ### check necessary?
+ if ((*m)->type() != Node::Class)
+ generateDetailedMember(*m, inner, marker);
+ else {
+ out() << "<h3> class ";
+ generateFullName(*m, inner, marker);
+ out() << "</h3>";
+ generateBrief(*m, marker, inner);
+ }
+
+ QStringList names;
+ names << (*m)->name();
+ if ((*m)->type() == Node::Function) {
+ const FunctionNode *func = reinterpret_cast<const FunctionNode *>(*m);
+ if (func->metaness() == FunctionNode::Ctor ||
+ func->metaness() == FunctionNode::Dtor ||
+ func->overloadNumber() != 1)
+ names.clear();
+ }
+ else if ((*m)->type() == Node::Property) {
+ const PropertyNode *prop = reinterpret_cast<const PropertyNode *>(*m);
+ if (!prop->getters().isEmpty() &&
+ !names.contains(prop->getters().first()->name()))
+ names << prop->getters().first()->name();
+ if (!prop->setters().isEmpty())
+ names << prop->setters().first()->name();
+ if (!prop->resetters().isEmpty())
+ names << prop->resetters().first()->name();
+ }
+ else if ((*m)->type() == Node::Enum) {
+ const EnumNode *enume = reinterpret_cast<const EnumNode*>(*m);
+ if (enume->flagsType())
+ names << enume->flagsType()->name();
+
+ foreach (const QString &enumName,
+ enume->doc().enumItemNames().toSet() -
+ enume->doc().omitEnumItemNames().toSet())
+ names << plainCode(marker->markedUpEnumValue(enumName,
+ enume));
+ }
+ foreach (const QString &name, names)
+ classSection.keywords += qMakePair(name,linkForNode(*m,0));
+ }
+ ++m;
+ }
+ if (!(*s).divClass.isEmpty())
+ out() << "</div>\n"; // QTBUG-9504
+ ++s;
+ }
+ generateFooter(inner);
+
+ if (!membersLink.isEmpty()) {
+ DcfSection membersSection;
+ membersSection.title = "List of all members";
+ membersSection.ref = membersLink;
+ appendDcfSubSection(&classSection, membersSection);
+ }
+ if (!obsoleteLink.isEmpty()) {
+ DcfSection obsoleteSection;
+ obsoleteSection.title = "Obsolete members";
+ obsoleteSection.ref = obsoleteLink;
+ appendDcfSubSection(&classSection, obsoleteSection);
+ }
+ if (!compatLink.isEmpty()) {
+ DcfSection compatSection;
+ compatSection.title = "Qt 3 support members";
+ compatSection.ref = compatLink;
+ appendDcfSubSection(&classSection, compatSection);
+ }
+
+ appendDcfSubSection(&dcfClassesRoot, classSection);
+}
+
+/*!
+ Generate the html page for a qdoc file that doesn't map
+ to an underlying c++ file.
+ */
+void DitaXmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
+{
+ SubTitleSize subTitleSize = LargeSubTitle;
+ DcfSection fakeSection;
+ fakeSection.title = fake->fullTitle();
+ fakeSection.ref = linkForNode(fake, 0);
+
+ QList<Section> sections;
+ QList<Section>::const_iterator s;
+
+ QString fullTitle = fake->fullTitle();
+ QString htmlTitle = fullTitle;
+ if (fake->subType() == Node::File && !fake->subTitle().isEmpty()) {
+ subTitleSize = SmallSubTitle;
+ htmlTitle += " (" + fake->subTitle() + ")";
+ }
+ else if (fake->subType() == Node::QmlBasicType) {
+ fullTitle = "QML Basic Type: " + fullTitle;
+ htmlTitle = fullTitle;
+ }
+
+ generateHeader(htmlTitle, fake, marker);
+
+ /*
+ Generate the TOC for the new doc format.
+ Don't generate a TOC for the home page.
+ */
+ if (fake->name() != QString("index.html"))
+ generateTableOfContents(fake,marker,0);
+
+ generateTitle(fullTitle,
+ Text() << fake->subTitle(),
+ subTitleSize,
+ fake,
+ marker);
+
+ if (fake->subType() == Node::Module) {
+ // Generate brief text and status for modules.
+ generateBrief(fake, marker);
+ generateStatus(fake, marker);
+
+ if (moduleNamespaceMap.contains(fake->name())) {
+ out() << "<a name=\"" << registerRef("namespaces") << "\"></a>\n";
+ out() << "<h2>Namespaces</h2>\n";
+ generateAnnotatedList(fake, marker, moduleNamespaceMap[fake->name()]);
+ }
+ if (moduleClassMap.contains(fake->name())) {
+ out() << "<a name=\"" << registerRef("classes") << "\"></a>\n";
+ out() << "<h2>Classes</h2>\n";
+ generateAnnotatedList(fake, marker, moduleClassMap[fake->name()]);
+ }
+ }
+ else if (fake->subType() == Node::HeaderFile) {
+ // Generate brief text and status for modules.
+ generateBrief(fake, marker);
+ generateStatus(fake, marker);
+
+ out() << "<ul>\n";
+
+ QString membersLink = generateListOfAllMemberFile(fake, marker);
+ if (!membersLink.isEmpty())
+ out() << "<li><a href=\"" << membersLink << "\">"
+ << "List of all members, including inherited members</a></li>\n";
+
+ QString obsoleteLink = generateLowStatusMemberFile(fake,
+ marker,
+ CodeMarker::Obsolete);
+ if (!obsoleteLink.isEmpty())
+ out() << "<li><a href=\"" << obsoleteLink << "\">"
+ << "Obsolete members</a></li>\n";
+
+ QString compatLink = generateLowStatusMemberFile(fake,
+ marker,
+ CodeMarker::Compat);
+ if (!compatLink.isEmpty())
+ out() << "<li><a href=\"" << compatLink << "\">"
+ << "Qt 3 support members</a></li>\n";
+
+ out() << "</ul>\n";
+
+ if (!membersLink.isEmpty()) {
+ DcfSection membersSection;
+ membersSection.title = "List of all members";
+ membersSection.ref = membersLink;
+ appendDcfSubSection(&fakeSection, membersSection);
+ }
+ if (!obsoleteLink.isEmpty()) {
+ DcfSection obsoleteSection;
+ obsoleteSection.title = "Obsolete members";
+ obsoleteSection.ref = obsoleteLink;
+ appendDcfSubSection(&fakeSection, obsoleteSection);
+ }
+ if (!compatLink.isEmpty()) {
+ DcfSection compatSection;
+ compatSection.title = "Qt 3 support members";
+ compatSection.ref = compatLink;
+ appendDcfSubSection(&fakeSection, compatSection);
+ }
+ }
+#ifdef QDOC_QML
+ else if (fake->subType() == Node::QmlClass) {
+ const QmlClassNode* qml_cn = static_cast<const QmlClassNode*>(fake);
+ const ClassNode* cn = qml_cn->classNode();
+ generateQmlInherits(qml_cn, marker);
+ generateQmlInstantiates(qml_cn, marker);
+ generateBrief(qml_cn, marker);
+ generateQmlInheritedBy(qml_cn, marker);
+ sections = marker->qmlSections(qml_cn,CodeMarker::Summary);
+ s = sections.begin();
+ while (s != sections.end()) {
+ out() << "<a name=\"" << registerRef((*s).name) << "\"></a>\n";
+ out() << "<h2>" << protectEnc((*s).name) << "</h2>\n";
+ generateQmlSummary(*s,fake,marker);
+ ++s;
+ }
+
+ out() << "<a name=\"" << registerRef("details") << "\"></a>\n";
+ out() << "<h2>" << "Detailed Description" << "</h2>\n";
+ generateBody(fake, marker);
+ if (cn)
+ generateQmlText(cn->doc().body(), cn, marker, fake->name());
+ generateAlsoList(fake, marker);
+ out() << "<hr />\n";
+
+ sections = marker->qmlSections(qml_cn,CodeMarker::Detailed);
+ s = sections.begin();
+ while (s != sections.end()) {
+ out() << "<h2>" << protectEnc((*s).name) << "</h2>\n";
+ NodeList::ConstIterator m = (*s).members.begin();
+ while (m != (*s).members.end()) {
+ generateDetailedQmlMember(*m, fake, marker);
+ out() << "<br/>\n";
+ fakeSection.keywords += qMakePair((*m)->name(),
+ linkForNode(*m,0));
+ ++m;
+ }
+ ++s;
+ }
+ generateFooter(fake);
+ return;
+ }
+#endif
+
+ sections = marker->sections(fake, CodeMarker::Summary, CodeMarker::Okay);
+ s = sections.begin();
+ while (s != sections.end()) {
+ out() << "<a name=\"" << registerRef((*s).name) << "\"></a>\n";
+ out() << "<h2>" << protectEnc((*s).name) << "</h2>\n";
+ generateSectionList(*s, fake, marker, CodeMarker::Summary);
+ ++s;
+ }
+
+ Text brief = fake->doc().briefText();
+ if (fake->subType() == Node::Module && !brief.isEmpty()) {
+ out() << "<a name=\"" << registerRef("details") << "\"></a>\n";
+ out() << "<div class=\"descr\"/>\n"; // QTBUG-9504
+ out() << "<h2>" << "Detailed Description" << "</h2>\n";
+ }
+ else
+ out() << "<div class=\"descr\"/>\n"; // QTBUG-9504
+
+ generateBody(fake, marker);
+ out() << "</div>\n"; // QTBUG-9504
+ generateAlsoList(fake, marker);
+
+ if (!fake->groupMembers().isEmpty()) {
+ NodeMap groupMembersMap;
+ foreach (const Node *node, fake->groupMembers()) {
+ if (node->type() == Node::Class || node->type() == Node::Namespace)
+ groupMembersMap[node->name()] = node;
+ }
+ generateAnnotatedList(fake, marker, groupMembersMap);
+ }
+
+ fakeSection.keywords += qMakePair(fakeSection.title, fakeSection.ref);
+
+ sections = marker->sections(fake, CodeMarker::Detailed, CodeMarker::Okay);
+ s = sections.begin();
+ while (s != sections.end()) {
+ out() << "<hr />\n";
+ out() << "<h2>" << protectEnc((*s).name) << "</h2>\n";
+
+ NodeList::ConstIterator m = (*s).members.begin();
+ while (m != (*s).members.end()) {
+ generateDetailedMember(*m, fake, marker);
+ fakeSection.keywords += qMakePair((*m)->name(), linkForNode(*m, 0));
+ ++m;
+ }
+ ++s;
+ }
+ generateFooter(fake);
+
+ if (fake->subType() == Node::Example) {
+ appendDcfSubSection(&dcfExamplesRoot, fakeSection);
+ }
+ else if (fake->subType() != Node::File) {
+ QString contentsPage = fake->links().value(Node::ContentsLink).first;
+
+ if (contentsPage == "Qt Designer Manual") {
+ appendDcfSubSection(&dcfDesignerRoot, fakeSection);
+ }
+ else if (contentsPage == "Qt Linguist Manual") {
+ appendDcfSubSection(&dcfLinguistRoot, fakeSection);
+ }
+ else if (contentsPage == "Qt Assistant Manual") {
+ appendDcfSubSection(&dcfAssistantRoot, fakeSection);
+ }
+ else if (contentsPage == "qmake Manual") {
+ appendDcfSubSection(&dcfQmakeRoot, fakeSection);
+ }
+ else {
+ appendDcfSubSection(&dcfOverviewsRoot, fakeSection);
+ }
+ }
+}
+
+/*!
+ Returns "html" for this subclass of Generator.
+ */
+QString DitaXmlGenerator::fileExtension(const Node * /* node */) const
+{
+ return "html";
+}
+
+/*!
+ Output breadcrumb list in the html file.
+ */
+void DitaXmlGenerator::generateBreadCrumbs(const QString& title,
+ const Node *node,
+ CodeMarker *marker)
+{
+ Text breadcrumb;
+ if (node->type() == Node::Class) {
+ const ClassNode* cn = static_cast<const ClassNode*>(node);
+ QString name = node->moduleName();
+ out() << " <li><a href=\"modules.html\">All Modules</a></li>";
+ if (!name.isEmpty()) {
+ out() << " <li>";
+ breadcrumb << Atom(Atom::AutoLink,name);
+ generateText(breadcrumb, node, marker);
+ out() << "</li>\n";
+ }
+ breadcrumb.clear();
+ if (!cn->name().isEmpty()) {
+ out() << " <li>";
+ breadcrumb << Atom(Atom::AutoLink,cn->name());
+ generateText(breadcrumb, 0, marker);
+ out() << "</li>\n";
+ }
+ }
+ else if (node->type() == Node::Fake) {
+ const FakeNode* fn = static_cast<const FakeNode*>(node);
+ if (node->subType() == Node::Module) {
+ out() << " <li><a href=\"modules.html\">All Modules</a></li>";
+ QString name = node->name();
+ if (!name.isEmpty()) {
+ out() << " <li>";
+ breadcrumb << Atom(Atom::AutoLink,name);
+ generateText(breadcrumb, 0, marker);
+ out() << "</li>\n";
+ }
+ }
+ else if (node->subType() == Node::Group) {
+ if (fn->name() == QString("modules"))
+ out() << " <li><a href=\"modules.html\">All Modules</a></li>";
+ else {
+ out() << " <li><a href=\"" << fn->name() << "\">" << title
+ << "</a></li>";
+ }
+ }
+ else if (node->subType() == Node::Page) {
+ if (fn->name() == QString("examples.html")) {
+ out() << " <li><a href=\"all-examples.html\">Examples</a></li>";
+ }
+ else if (fn->name().startsWith("examples-")) {
+ out() << " <li><a href=\"all-examples.html\">Examples</a></li>";
+ out() << " <li><a href=\"" << fn->name() << "\">" << title
+ << "</a></li>";
+ }
+ else if (fn->name() == QString("namespaces.html")) {
+ out() << " <li><a href=\"namespaces.html\">All Namespaces</a></li>";
+ }
+ else {
+ out() << " <li><a href=\"" << fn->name() << "\">" << title
+ << "</a></li>";
+ }
+ }
+ else if (node->subType() == Node::QmlClass) {
+ out() << " <li><a href=\"qdeclarativeelements.html\">QML Elements</a></li>";
+ out() << " <li><a href=\"" << fn->name() << "\">" << title
+ << "</a></li>";
+ }
+ else if (node->subType() == Node::Example) {
+ out() << " <li><a href=\"all-examples.html\">Examples</a></li>";
+ QStringList sl = fn->name().split('/');
+ QString name = "examples-" + sl.at(0) + ".html";
+ QString t = CodeParser::titleFromName(name);
+ out() << " <li><a href=\"" << name << "\">"
+ << t << "</a></li>";
+ out() << " <li><a href=\"" << sl.at(0)
+ << "-" << sl.at(sl.size()-1) << ".html\">"
+ << title << "</a></li>";
+ }
+ }
+ else if (node->type() == Node::Namespace) {
+ const NamespaceNode* nsn = static_cast<const NamespaceNode*>(node);
+ out() << " <li><a href=\"namespaces.html\">All Namespaces</a></li>";
+ out() << " <li><a href=\"" << fileName(nsn) << "\">" << title
+ << "</a></li>";
+ }
+}
+
+void DitaXmlGenerator::generateHeader(const QString& title,
+ const Node *node,
+ CodeMarker *marker)
+{
+ out() << QString("<?xml version=\"1.0\" encoding=\"%1\"?>\n").arg(outputEncoding);
+ out() << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+ out() << QString("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"%1\" lang=\"%1\">\n").arg(naturalLanguage);
+ out() << "<head>\n";
+ out() << " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
+ QString shortVersion;
+ shortVersion = project + " " + shortVersion + ": ";
+ if (node && !node->doc().location().isEmpty())
+ out() << "<!-- " << node->doc().location().fileName() << " -->\n";
+
+ shortVersion = myTree->version();
+ if (shortVersion.count(QChar('.')) == 2)
+ shortVersion.truncate(shortVersion.lastIndexOf(QChar('.')));
+ if (!shortVersion.isEmpty()) {
+ if (project == "QSA")
+ shortVersion = "QSA " + shortVersion + ": ";
+ else
+ shortVersion = "Qt " + shortVersion + ": ";
+ }
+
+ out() << " <title>" << shortVersion << protectEnc(title) << "</title>\n";
+
+ out() << " <!--[if IE]>";
+ out() << "<meta name=\"MSSmartTagsPreventParsing\" content=\"true\">";
+ out() << "<meta http-equiv=\"imagetoolbar\" content=\"no\">";
+ out() << "<![endif]-->";
+ out() << "<!--[if lt IE 7]>";
+ out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie6.css\">";
+ out() << "<![endif]-->";
+ out() << "<!--[if IE 7]>";
+ out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie7.css\">";
+ out() << "<![endif]-->";
+ out() << "<!--[if IE 8]>";
+ out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie8.css\">";
+ out() << "<![endif]-->";
+
+
+ //out() << " <title>Qt Reference Documentation</title>";
+ out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />\n";
+ out() << " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n";
+ out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
+ out() << "</head>\n";
+
+ if (offlineDocs)
+ out() << "<body class=\"offline\" onload=\"CheckEmptyAndLoadList();\">\n";
+ else
+ out() << "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n";
+
+#ifdef GENERATE_MAC_REFS
+ if (mainPage)
+ generateMacRef(node, marker);
+#endif
+ out() << QString(postHeader).replace("\\" + COMMAND_VERSION, myTree->version());
+ generateBreadCrumbs(title,node,marker);
+ out() << QString(postPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
+
+#if 0 // Removed for new docf format. MWS
+ if (node && !node->links().empty())
+ out() << "<p>\n" << navigationLinks << "</p>\n";
+#endif
+}
+
+void DitaXmlGenerator::generateTitle(const QString& title,
+ const Text &subTitle,
+ SubTitleSize subTitleSize,
+ const Node *relative,
+ CodeMarker *marker)
+{
+ if (!title.isEmpty())
+ out() << "<h1 class=\"title\">" << protectEnc(title) << "</h1>\n";
+ if (!subTitle.isEmpty()) {
+ out() << "<span";
+ if (subTitleSize == SmallSubTitle)
+ out() << " class=\"small-subtitle\">";
+ else
+ out() << " class=\"subtitle\">";
+ generateText(subTitle, relative, marker);
+ out() << "</span>\n";
+ }
+}
+
+void DitaXmlGenerator::generateFooter(const Node *node)
+{
+ if (node && !node->links().empty())
+ out() << "<p>\n" << navigationLinks << "</p>\n";
+
+ out() << QString(footer).replace("\\" + COMMAND_VERSION, myTree->version())
+ << QString(address).replace("\\" + COMMAND_VERSION, myTree->version());
+ out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
+ out() << "</body>\n";
+ out() << "</html>\n";
+}
+
+void DitaXmlGenerator::generateBrief(const Node *node, CodeMarker *marker,
+ const Node *relative)
+{
+ Text brief = node->doc().briefText();
+ if (!brief.isEmpty()) {
+ out() << "<p>";
+ generateText(brief, node, marker);
+ if (!relative || node == relative)
+ out() << " <a href=\"#";
+ else
+ out() << " <a href=\"" << linkForNode(node, relative) << "#";
+ out() << registerRef("details") << "\">More...</a></p>\n";
+ }
+}
+
+void DitaXmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *marker)
+{
+ if (!inner->includes().isEmpty()) {
+ out() << "<pre class=\"highlightedCode\">"
+ << trimmedTrailing(highlightedCode(indent(codeIndent,
+ marker->markedUpIncludes(inner->includes())),
+ marker,inner))
+ << "</pre>";
+ }
+}
+
+/*!
+ Generates a table of contents begining at \a node.
+ */
+void DitaXmlGenerator::generateTableOfContents(const Node *node,
+ CodeMarker *marker,
+ Doc::SectioningUnit sectioningUnit,
+ int numColumns,
+ const Node *relative)
+
+{
+ return;
+ if (!node->doc().hasTableOfContents())
+ return;
+ QList<Atom *> toc = node->doc().tableOfContents();
+ if (toc.isEmpty())
+ return;
+
+ QString nodeName = "";
+ if (node != relative)
+ nodeName = node->name();
+
+ QStringList sectionNumber;
+ int columnSize = 0;
+
+ QString tdTag;
+ if (numColumns > 1) {
+ tdTag = "<td>"; /* width=\"" + QString::number((100 + numColumns - 1) / numColumns) + "%\">";*/
+ out() << "<table class=\"toc\">\n<tr class=\"topAlign\">"
+ << tdTag << "\n";
+ }
+
+ // disable nested links in table of contents
+ inContents = true;
+ inLink = true;
+
+ for (int i = 0; i < toc.size(); ++i) {
+ Atom *atom = toc.at(i);
+
+ int nextLevel = atom->string().toInt();
+ if (nextLevel > (int)sectioningUnit)
+ continue;
+
+ if (sectionNumber.size() < nextLevel) {
+ do {
+ out() << "<ul>";
+ sectionNumber.append("1");
+ } while (sectionNumber.size() < nextLevel);
+ }
+ else {
+ while (sectionNumber.size() > nextLevel) {
+ out() << "</ul>\n";
+ sectionNumber.removeLast();
+ }
+ sectionNumber.last() = QString::number(sectionNumber.last().toInt() + 1);
+ }
+ int numAtoms;
+ Text headingText = Text::sectionHeading(atom);
+
+ if (sectionNumber.size() == 1 && columnSize > toc.size() / numColumns) {
+ out() << "</ul></td>" << tdTag << "<ul>\n";
+ columnSize = 0;
+ }
+ out() << "<li>";
+ out() << "<a href=\""
+ << nodeName
+ << "#"
+ << Doc::canonicalTitle(headingText.toString())
+ << "\">";
+ generateAtomList(headingText.firstAtom(), node, marker, true, numAtoms);
+ out() << "</a></li>\n";
+
+ ++columnSize;
+ }
+ while (!sectionNumber.isEmpty()) {
+ out() << "</ul>\n";
+ sectionNumber.removeLast();
+ }
+
+ if (numColumns > 1)
+ out() << "</td></tr></table>\n";
+
+ inContents = false;
+ inLink = false;
+}
+
+/*!
+ Revised for the new doc format.
+ Generates a table of contents begining at \a node.
+ */
+void DitaXmlGenerator::generateTableOfContents(const Node *node,
+ CodeMarker *marker,
+ QList<Section>* sections)
+{
+ QList<Atom*> toc;
+ if (node->doc().hasTableOfContents())
+ toc = node->doc().tableOfContents();
+ if (toc.isEmpty() && !sections && (node->subType() != Node::Module))
+ return;
+
+ QStringList sectionNumber;
+ int detailsBase = 0;
+
+ // disable nested links in table of contents
+ inContents = true;
+ inLink = true;
+
+ out() << "<div class=\"toc\">\n";
+ out() << "<h3>Contents</h3>\n";
+ sectionNumber.append("1");
+ out() << "<ul>\n";
+
+ if (node->subType() == Node::Module) {
+ if (moduleNamespaceMap.contains(node->name())) {
+ out() << "<li class=\"level"
+ << sectionNumber.size()
+ << "\"><a href=\"#"
+ << registerRef("namespaces")
+ << "\">Namespaces</a></li>\n";
+ }
+ if (moduleClassMap.contains(node->name())) {
+ out() << "<li class=\"level"
+ << sectionNumber.size()
+ << "\"><a href=\"#"
+ << registerRef("classes")
+ << "\">Classes</a></li>\n";
+ }
+ out() << "<li class=\"level"
+ << sectionNumber.size()
+ << "\"><a href=\"#"
+ << registerRef("details")
+ << "\">Detailed Description</a></li>\n";
+ for (int i = 0; i < toc.size(); ++i) {
+ if (toc.at(i)->string().toInt() == 1) {
+ detailsBase = 1;
+ break;
+ }
+ }
+ }
+ else if (sections && (node->type() == Node::Class)) {
+ QList<Section>::ConstIterator s = sections->begin();
+ while (s != sections->end()) {
+ if (!s->members.isEmpty() || !s->reimpMembers.isEmpty()) {
+ out() << "<li class=\"level"
+ << sectionNumber.size()
+ << "\"><a href=\"#"
+ << registerRef((*s).pluralMember)
+ << "\">" << (*s).name
+ << "</a></li>\n";
+ }
+ ++s;
+ }
+ out() << "<li class=\"level"
+ << sectionNumber.size()
+ << "\"><a href=\"#"
+ << registerRef("details")
+ << "\">Detailed Description</a></li>\n";
+ for (int i = 0; i < toc.size(); ++i) {
+ if (toc.at(i)->string().toInt() == 1) {
+ detailsBase = 1;
+ break;
+ }
+ }
+ }
+
+ for (int i = 0; i < toc.size(); ++i) {
+ Atom *atom = toc.at(i);
+ int nextLevel = atom->string().toInt() + detailsBase;
+ if (sectionNumber.size() < nextLevel) {
+ do {
+ sectionNumber.append("1");
+ } while (sectionNumber.size() < nextLevel);
+ }
+ else {
+ while (sectionNumber.size() > nextLevel) {
+ sectionNumber.removeLast();
+ }
+ sectionNumber.last() = QString::number(sectionNumber.last().toInt() + 1);
+ }
+ int numAtoms;
+ Text headingText = Text::sectionHeading(atom);
+ QString s = headingText.toString();
+ out() << "<li class=\"level"
+ << sectionNumber.size()
+ << "\">";
+ out() << "<a href=\""
+ << "#"
+ << Doc::canonicalTitle(s)
+ << "\">";
+ generateAtomList(headingText.firstAtom(), node, marker, true, numAtoms);
+ out() << "</a></li>\n";
+ }
+ while (!sectionNumber.isEmpty()) {
+ sectionNumber.removeLast();
+ }
+ out() << "</ul>\n";
+ out() << "</div>\n";
+ inContents = false;
+ inLink = false;
+}
+
+#if 0
+void DitaXmlGenerator::generateNavigationBar(const NavigationBar& bar,
+ const Node *node,
+ CodeMarker *marker)
+{
+ if (bar.prev.begin() != 0 || bar.current.begin() != 0 ||
+ bar.next.begin() != 0) {
+ out() << "<p class=\"rightAlign\">";
+ if (bar.prev.begin() != 0) {
+#if 0
+ out() << "[<a href=\"" << section.previousBaseName()
+ << ".html\">Prev: ";
+ generateText(section.previousHeading(), node, marker);
+ out() << "</a>]\n";
+#endif
+ }
+ if (bar.current.begin() != 0) {
+ out() << "[<a href=\"" << "home"
+ << ".html\">Home</a>]\n";
+ }
+ if (bar.next.begin() != 0) {
+ out() << "[<a href=\"" << fileBase(node, bar.next)
+ << ".html\">Next: ";
+ generateText(Text::sectionHeading(bar.next.begin()), node, marker);
+ out() << "</a>]\n";
+ }
+ out() << "</p>\n";
+ }
+}
+#endif
+
+QString DitaXmlGenerator::generateListOfAllMemberFile(const InnerNode *inner,
+ CodeMarker *marker)
+{
+ QList<Section> sections;
+ QList<Section>::ConstIterator s;
+
+ sections = marker->sections(inner,
+ CodeMarker::SeparateList,
+ CodeMarker::Okay);
+ if (sections.isEmpty())
+ return QString();
+
+ QString fileName = fileBase(inner) + "-members." + fileExtension(inner);
+ beginSubPage(inner->location(), fileName);
+ QString title = "List of All Members for " + inner->name();
+ generateHeader(title, inner, marker);
+ generateTitle(title, Text(), SmallSubTitle, inner, marker);
+ out() << "<p>This is the complete list of members for ";
+ generateFullName(inner, 0, marker);
+ out() << ", including inherited members.</p>\n";
+
+ Section section = sections.first();
+ generateSectionList(section, 0, marker, CodeMarker::SeparateList);
+
+ generateFooter();
+ endSubPage();
+ return fileName;
+}
+
+QString DitaXmlGenerator::generateLowStatusMemberFile(const InnerNode *inner,
+ CodeMarker *marker,
+ CodeMarker::Status status)
+{
+ QList<Section> sections = marker->sections(inner,
+ CodeMarker::Summary,
+ status);
+ QMutableListIterator<Section> j(sections);
+ while (j.hasNext()) {
+ if (j.next().members.size() == 0)
+ j.remove();
+ }
+ if (sections.isEmpty())
+ return QString();
+
+ int i;
+
+ QString title;
+ QString fileName;
+
+ if (status == CodeMarker::Compat) {
+ title = "Qt 3 Support Members for " + inner->name();
+ fileName = fileBase(inner) + "-qt3." + fileExtension(inner);
+ }
+ else {
+ title = "Obsolete Members for " + inner->name();
+ fileName = fileBase(inner) + "-obsolete." + fileExtension(inner);
+ }
+
+ beginSubPage(inner->location(), fileName);
+ generateHeader(title, inner, marker);
+ generateTitle(title, Text(), SmallSubTitle, inner, marker);
+
+ if (status == CodeMarker::Compat) {
+ out() << "<p><b>The following class members are part of the "
+ "<a href=\"qt3support.html\">Qt 3 support layer</a>.</b> "
+ "They are provided to help you port old code to Qt 4. We advise against "
+ "using them in new code.</p>\n";
+ }
+ else {
+ out() << "<p><b>The following class members are obsolete.</b> "
+ << "They are provided to keep old source code working. "
+ << "We strongly advise against using them in new code.</p>\n";
+ }
+
+ out() << "<p><ul><li><a href=\""
+ << linkForNode(inner, 0) << "\">"
+ << protectEnc(inner->name())
+ << " class reference</a></li></ul></p>\n";
+
+ for (i = 0; i < sections.size(); ++i) {
+ out() << "<h2>" << protectEnc(sections.at(i).name) << "</h2>\n";
+ generateSectionList(sections.at(i), inner, marker, CodeMarker::Summary);
+ }
+
+ sections = marker->sections(inner, CodeMarker::Detailed, status);
+ for (i = 0; i < sections.size(); ++i) {
+ out() << "<hr />\n";
+ out() << "<h2>" << protectEnc(sections.at(i).name) << "</h2>\n";
+
+ NodeList::ConstIterator m = sections.at(i).members.begin();
+ while (m != sections.at(i).members.end()) {
+ if ((*m)->access() != Node::Private)
+ generateDetailedMember(*m, inner, marker);
+ ++m;
+ }
+ }
+
+ generateFooter();
+ endSubPage();
+ return fileName;
+}
+
+void DitaXmlGenerator::generateClassHierarchy(const Node *relative,
+ CodeMarker *marker,
+ const QMap<QString,const Node*> &classMap)
+{
+ if (classMap.isEmpty())
+ return;
+
+ NodeMap topLevel;
+ NodeMap::ConstIterator c = classMap.begin();
+ while (c != classMap.end()) {
+ const ClassNode *classe = static_cast<const ClassNode *>(*c);
+ if (classe->baseClasses().isEmpty())
+ topLevel.insert(classe->name(), classe);
+ ++c;
+ }
+
+ QStack<NodeMap > stack;
+ stack.push(topLevel);
+
+ out() << "<ul>\n";
+ while (!stack.isEmpty()) {
+ if (stack.top().isEmpty()) {
+ stack.pop();
+ out() << "</ul>\n";
+ }
+ else {
+ const ClassNode *child =
+ static_cast<const ClassNode *>(*stack.top().begin());
+ out() << "<li>";
+ generateFullName(child, relative, marker);
+ out() << "</li>\n";
+ stack.top().erase(stack.top().begin());
+
+ NodeMap newTop;
+ foreach (const RelatedClass &d, child->derivedClasses()) {
+ if (d.access != Node::Private)
+ newTop.insert(d.node->name(), d.node);
+ }
+ if (!newTop.isEmpty()) {
+ stack.push(newTop);
+ out() << "<ul>\n";
+ }
+ }
+ }
+}
+
+void DitaXmlGenerator::generateAnnotatedList(const Node *relative,
+ CodeMarker *marker,
+ const NodeMap &nodeMap)
+{
+ out() << "<table class=\"annotated\">\n";
+
+ int row = 0;
+ foreach (const QString &name, nodeMap.keys()) {
+ const Node *node = nodeMap[name];
+
+ if (node->status() == Node::Obsolete)
+ continue;
+
+ if (++row % 2 == 1)
+ out() << "<tr class=\"odd topAlign\">";
+ else
+ out() << "<tr class=\"even topAlign\">";
+ out() << "<td><p>";
+ generateFullName(node, relative, marker);
+ out() << "</p></td>";
+
+ if (!(node->type() == Node::Fake)) {
+ Text brief = node->doc().trimmedBriefText(name);
+ if (!brief.isEmpty()) {
+ out() << "<td><p>";
+ generateText(brief, node, marker);
+ out() << "</p></td>";
+ }
+ }
+ else {
+ out() << "<td><p>";
+ out() << protectEnc(node->doc().briefText().toString());
+ out() << "</p></td>";
+ }
+ out() << "</tr>\n";
+ }
+ out() << "</table>\n";
+}
+
+/*!
+ This function finds the common prefix of the names of all
+ the classes in \a classMap and then generates a compact
+ list of the class names alphabetized on the part of the
+ name not including the common prefix. You can tell the
+ function to use \a comonPrefix as the common prefix, but
+ normally you let it figure it out itself by looking at
+ the name of the first and last classes in \a classMap.
+ */
+void DitaXmlGenerator::generateCompactList(const Node *relative,
+ CodeMarker *marker,
+ const NodeMap &classMap,
+ bool includeAlphabet,
+ QString commonPrefix)
+{
+ const int NumParagraphs = 37; // '0' to '9', 'A' to 'Z', '_'
+
+ if (classMap.isEmpty())
+ return;
+
+ /*
+ If commonPrefix is not empty, then the caller knows what
+ the common prefix is and has passed it in, so just use that
+ one.
+ */
+ int commonPrefixLen = commonPrefix.length();
+ if (commonPrefixLen == 0) {
+ QString first;
+ QString last;
+
+ /*
+ The caller didn't pass in a common prefix, so get the common
+ prefix by looking at the class names of the first and last
+ classes in the class map. Discard any namespace names and
+ just use the bare class names. For Qt, the prefix is "Q".
+
+ Note that the algorithm used here to derive the common prefix
+ from the first and last classes in alphabetical order (QAccel
+ and QXtWidget in Qt 2.1), fails if either class name does not
+ begin with Q.
+ */
+
+ NodeMap::const_iterator iter = classMap.begin();
+ while (iter != classMap.end()) {
+ if (!iter.key().contains("::")) {
+ first = iter.key();
+ break;
+ }
+ ++iter;
+ }
+
+ if (first.isEmpty())
+ first = classMap.begin().key();
+
+ iter = classMap.end();
+ while (iter != classMap.begin()) {
+ --iter;
+ if (!iter.key().contains("::")) {
+ last = iter.key();
+ break;
+ }
+ }
+
+ if (last.isEmpty())
+ last = classMap.begin().key();
+
+ if (classMap.size() > 1) {
+ while (commonPrefixLen < first.length() + 1 &&
+ commonPrefixLen < last.length() + 1 &&
+ first[commonPrefixLen] == last[commonPrefixLen])
+ ++commonPrefixLen;
+ }
+
+ commonPrefix = first.left(commonPrefixLen);
+ }
+
+ /*
+ Divide the data into 37 paragraphs: 0, ..., 9, A, ..., Z,
+ underscore (_). QAccel will fall in paragraph 10 (A) and
+ QXtWidget in paragraph 33 (X). This is the only place where we
+ assume that NumParagraphs is 37. Each paragraph is a NodeMap.
+ */
+ NodeMap paragraph[NumParagraphs+1];
+ QString paragraphName[NumParagraphs+1];
+ QSet<char> usedParagraphNames;
+
+ NodeMap::ConstIterator c = classMap.begin();
+ while (c != classMap.end()) {
+ QStringList pieces = c.key().split("::");
+ QString key;
+ int idx = commonPrefixLen;
+ if (!pieces.last().startsWith(commonPrefix))
+ idx = 0;
+ if (pieces.size() == 1)
+ key = pieces.last().mid(idx).toLower();
+ else
+ key = pieces.last().toLower();
+
+ int paragraphNr = NumParagraphs - 1;
+
+ if (key[0].digitValue() != -1) {
+ paragraphNr = key[0].digitValue();
+ }
+ else if (key[0] >= QLatin1Char('a') && key[0] <= QLatin1Char('z')) {
+ paragraphNr = 10 + key[0].unicode() - 'a';
+ }
+
+ paragraphName[paragraphNr] = key[0].toUpper();
+ usedParagraphNames.insert(key[0].toLower().cell());
+ paragraph[paragraphNr].insert(key, c.value());
+ ++c;
+ }
+
+ /*
+ Each paragraph j has a size: paragraph[j].count(). In the
+ discussion, we will assume paragraphs 0 to 5 will have sizes
+ 3, 1, 4, 1, 5, 9.
+
+ We now want to compute the paragraph offset. Paragraphs 0 to 6
+ start at offsets 0, 3, 4, 8, 9, 14, 23.
+ */
+ int paragraphOffset[NumParagraphs + 1]; // 37 + 1
+ paragraphOffset[0] = 0;
+ for (int i=0; i<NumParagraphs; i++) // i = 0..36
+ paragraphOffset[i+1] = paragraphOffset[i] + paragraph[i].count();
+
+ int curParNr = 0;
+ int curParOffset = 0;
+
+ /*
+ Output the alphabet as a row of links.
+ */
+ if (includeAlphabet) {
+ out() << "<p class=\"centerAlign functionIndex\"><b>";
+ for (int i = 0; i < 26; i++) {
+ QChar ch('a' + i);
+ if (usedParagraphNames.contains(char('a' + i)))
+ out() << QString("<a href=\"#%1\">%2</a>&nbsp;").arg(ch).arg(ch.toUpper());
+ }
+ out() << "</b></p>\n";
+ }
+
+ /*
+ Output a <div> element to contain all the <dl> elements.
+ */
+ out() << "<div class=\"flowListDiv\">\n";
+
+ for (int i=0; i<classMap.count()-1; i++) {
+ while ((curParNr < NumParagraphs) &&
+ (curParOffset == paragraph[curParNr].count())) {
+ ++curParNr;
+ curParOffset = 0;
+ }
+
+ /*
+ Starting a new paragraph means starting a new <dl>.
+ */
+ if (curParOffset == 0) {
+ if (i > 0)
+ out() << "</dl>\n";
+ if (++numTableRows % 2 == 1)
+ out() << "<dl class=\"flowList odd\">";
+ else
+ out() << "<dl class=\"flowList even\">";
+ out() << "<dt class=\"alphaChar\">";
+ if (includeAlphabet) {
+ QChar c = paragraphName[curParNr][0].toLower();
+ out() << QString("<a name=\"%1\"></a>").arg(c);
+ }
+ out() << "<b>"
+ << paragraphName[curParNr]
+ << "</b>";
+ out() << "</dt>\n";
+ }
+
+ /*
+ Output a <dd> for the current offset in the current paragraph.
+ */
+ out() << "<dd>";
+ if ((curParNr < NumParagraphs) &&
+ !paragraphName[curParNr].isEmpty()) {
+ NodeMap::Iterator it;
+ it = paragraph[curParNr].begin();
+ for (int i=0; i<curParOffset; i++)
+ ++it;
+
+ /*
+ Previously, we used generateFullName() for this, but we
+ require some special formatting.
+ */
+ out() << "<a href=\"" << linkForNode(it.value(), relative) << "\">";
+
+ QStringList pieces;
+ if (it.value()->subType() == Node::QmlClass)
+ pieces << it.value()->name();
+ else
+ pieces = fullName(it.value(), relative, marker).split("::");
+ out() << protectEnc(pieces.last());
+ out() << "</a>";
+ if (pieces.size() > 1) {
+ out() << " (";
+ generateFullName(it.value()->parent(), relative, marker);
+ out() << ")";
+ }
+ }
+ out() << "</dd>\n";
+ curParOffset++;
+ }
+ out() << "</dl>\n";
+ out() << "</div>\n";
+}
+
+void DitaXmlGenerator::generateFunctionIndex(const Node *relative,
+ CodeMarker *marker)
+{
+ out() << "<p class=\"centerAlign functionIndex\"><b>";
+ for (int i = 0; i < 26; i++) {
+ QChar ch('a' + i);
+ out() << QString("<a href=\"#%1\">%2</a>&nbsp;").arg(ch).arg(ch.toUpper());
+ }
+ out() << "</b></p>\n";
+
+ char nextLetter = 'a';
+ char currentLetter;
+
+#if 1
+ out() << "<ul>\n";
+#endif
+ QMap<QString, NodeMap >::ConstIterator f = funcIndex.begin();
+ while (f != funcIndex.end()) {
+#if 1
+ out() << "<li>";
+#else
+ out() << "<p>";
+#endif
+ out() << protectEnc(f.key()) << ":";
+
+ currentLetter = f.key()[0].unicode();
+ while (islower(currentLetter) && currentLetter >= nextLetter) {
+ out() << QString("<a name=\"%1\"></a>").arg(nextLetter);
+ nextLetter++;
+ }
+
+ NodeMap::ConstIterator s = (*f).begin();
+ while (s != (*f).end()) {
+ out() << " ";
+ generateFullName((*s)->parent(), relative, marker, *s);
+ ++s;
+ }
+#if 1
+ out() << "</li>";
+#else
+ out() << "</p>";
+#endif
+ out() << "\n";
+ ++f;
+ }
+#if 1
+ out() << "</ul>\n";
+#endif
+}
+
+void DitaXmlGenerator::generateLegaleseList(const Node *relative,
+ CodeMarker *marker)
+{
+ QMap<Text, const Node *>::ConstIterator it = legaleseTexts.begin();
+ while (it != legaleseTexts.end()) {
+ Text text = it.key();
+ out() << "<hr />\n";
+ generateText(text, relative, marker);
+ out() << "<ul>\n";
+ do {
+ out() << "<li>";
+ generateFullName(it.value(), relative, marker);
+ out() << "</li>\n";
+ ++it;
+ } while (it != legaleseTexts.end() && it.key() == text);
+ out() << "</ul>\n";
+ }
+}
+
+/*void DitaXmlGenerator::generateSynopsis(const Node *node,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style)
+{
+ QString marked = marker->markedUpSynopsis(node, relative, style);
+ QRegExp templateTag("(<[^@>]*>)");
+ if (marked.indexOf(templateTag) != -1) {
+ QString contents = protectEnc(marked.mid(templateTag.pos(1),
+ templateTag.cap(1).length()));
+ marked.replace(templateTag.pos(1), templateTag.cap(1).length(),
+ contents);
+ }
+ marked.replace(QRegExp("<@param>([a-z]+)_([1-9n])</@param>"),
+ "<i>\\1<sub>\\2</sub></i>");
+ marked.replace("<@param>", "<i>");
+ marked.replace("</@param>", "</i>");
+
+ if (style == CodeMarker::Summary)
+ marked.replace("@name>", "b>");
+
+ if (style == CodeMarker::SeparateList) {
+ QRegExp extraRegExp("<@extra>.*</@extra>");
+ extraRegExp.setMinimal(true);
+ marked.replace(extraRegExp, "");
+ }
+ else {
+ marked.replace("<@extra>", "&nbsp;&nbsp;<tt>");
+ marked.replace("</@extra>", "</tt>");
+ }
+
+ if (style != CodeMarker::Detailed) {
+ marked.replace("<@type>", "");
+ marked.replace("</@type>", "");
+ }
+ out() << highlightedCode(marked, marker, relative);
+}*/
+
+#ifdef QDOC_QML
+void DitaXmlGenerator::generateQmlItem(const Node *node,
+ const Node *relative,
+ CodeMarker *marker,
+ bool summary)
+{
+ QString marked = marker->markedUpQmlItem(node,summary);
+ QRegExp templateTag("(<[^@>]*>)");
+ if (marked.indexOf(templateTag) != -1) {
+ QString contents = protectEnc(marked.mid(templateTag.pos(1),
+ templateTag.cap(1).length()));
+ marked.replace(templateTag.pos(1), templateTag.cap(1).length(),
+ contents);
+ }
+ marked.replace(QRegExp("<@param>([a-z]+)_([1-9n])</@param>"),
+ "<i>\\1<sub>\\2</sub></i>");
+ marked.replace("<@param>", "<i>");
+ marked.replace("</@param>", "</i>");
+
+ if (summary)
+ marked.replace("@name>", "b>");
+
+ marked.replace("<@extra>", "<tt>");
+ marked.replace("</@extra>", "</tt>");
+
+ if (summary) {
+ marked.replace("<@type>", "");
+ marked.replace("</@type>", "");
+ }
+ out() << highlightedCode(marked, marker, relative);
+}
+#endif
+
+void DitaXmlGenerator::generateOverviewList(const Node *relative, CodeMarker * /* marker */)
+{
+ QMap<const FakeNode *, QMap<QString, FakeNode *> > fakeNodeMap;
+ QMap<QString, const FakeNode *> groupTitlesMap;
+ QMap<QString, FakeNode *> uncategorizedNodeMap;
+ QRegExp singleDigit("\\b([0-9])\\b");
+
+ const NodeList children = myTree->root()->childNodes();
+ foreach (Node *child, children) {
+ if (child->type() == Node::Fake && child != relative) {
+ FakeNode *fakeNode = static_cast<FakeNode *>(child);
+
+ // Check whether the page is part of a group or is the group
+ // definition page.
+ QString group;
+ bool isGroupPage = false;
+ if (fakeNode->doc().metaCommandsUsed().contains("group")) {
+ group = fakeNode->doc().metaCommandArgs("group")[0];
+ isGroupPage = true;
+ }
+
+ // there are too many examples; they would clutter the list
+ if (fakeNode->subType() == Node::Example)
+ continue;
+
+ // not interested either in individual (Qt Designer etc.) manual chapters
+ if (fakeNode->links().contains(Node::ContentsLink))
+ continue;
+
+ // Discard external nodes.
+ if (fakeNode->subType() == Node::ExternalPage)
+ continue;
+
+ QString sortKey = fakeNode->fullTitle().toLower();
+ if (sortKey.startsWith("the "))
+ sortKey.remove(0, 4);
+ sortKey.replace(singleDigit, "0\\1");
+
+ if (!group.isEmpty()) {
+ if (isGroupPage) {
+ // If we encounter a group definition page, we add all
+ // the pages in that group to the list for that group.
+ foreach (Node *member, fakeNode->groupMembers()) {
+ if (member->type() != Node::Fake)
+ continue;
+ FakeNode *page = static_cast<FakeNode *>(member);
+ if (page) {
+ QString sortKey = page->fullTitle().toLower();
+ if (sortKey.startsWith("the "))
+ sortKey.remove(0, 4);
+ sortKey.replace(singleDigit, "0\\1");
+ fakeNodeMap[const_cast<const FakeNode *>(fakeNode)].insert(sortKey, page);
+ groupTitlesMap[fakeNode->fullTitle()] = const_cast<const FakeNode *>(fakeNode);
+ }
+ }
+ }
+ else if (!isGroupPage) {
+ // If we encounter a page that belongs to a group then
+ // we add that page to the list for that group.
+ const FakeNode *groupNode = static_cast<const FakeNode *>(myTree->root()->findNode(group, Node::Fake));
+ if (groupNode)
+ fakeNodeMap[groupNode].insert(sortKey, fakeNode);
+ //else
+ // uncategorizedNodeMap.insert(sortKey, fakeNode);
+ }// else
+ // uncategorizedNodeMap.insert(sortKey, fakeNode);
+ }// else
+ // uncategorizedNodeMap.insert(sortKey, fakeNode);
+ }
+ }
+
+ // We now list all the pages found that belong to groups.
+ // If only certain pages were found for a group, but the definition page
+ // for that group wasn't listed, the list of pages will be intentionally
+ // incomplete. However, if the group definition page was listed, all the
+ // pages in that group are listed for completeness.
+
+ if (!fakeNodeMap.isEmpty()) {
+ foreach (const QString &groupTitle, groupTitlesMap.keys()) {
+ const FakeNode *groupNode = groupTitlesMap[groupTitle];
+ out() << QString("<h3><a href=\"%1\">%2</a></h3>\n").arg(
+ linkForNode(groupNode, relative)).arg(
+ protectEnc(groupNode->fullTitle()));
+
+ if (fakeNodeMap[groupNode].count() == 0)
+ continue;
+
+ out() << "<ul>\n";
+
+ foreach (const FakeNode *fakeNode, fakeNodeMap[groupNode]) {
+ QString title = fakeNode->fullTitle();
+ if (title.startsWith("The "))
+ title.remove(0, 4);
+ out() << "<li><a href=\"" << linkForNode(fakeNode, relative) << "\">"
+ << protectEnc(title) << "</a></li>\n";
+ }
+ out() << "</ul>\n";
+ }
+ }
+
+ if (!uncategorizedNodeMap.isEmpty()) {
+ out() << QString("<h3>Miscellaneous</h3>\n");
+ out() << "<ul>\n";
+ foreach (const FakeNode *fakeNode, uncategorizedNodeMap) {
+ QString title = fakeNode->fullTitle();
+ if (title.startsWith("The "))
+ title.remove(0, 4);
+ out() << "<li><a href=\"" << linkForNode(fakeNode, relative) << "\">"
+ << protectEnc(title) << "</a></li>\n";
+ }
+ out() << "</ul>\n";
+ }
+}
+
+#ifdef QDOC_NAME_ALIGNMENT
+void DitaXmlGenerator::generateSection(const NodeList& nl,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style)
+{
+ bool name_alignment = true;
+ if (!nl.isEmpty()) {
+ bool twoColumn = false;
+ if (style == CodeMarker::SeparateList) {
+ name_alignment = false;
+ twoColumn = (nl.count() >= 16);
+ }
+ else if (nl.first()->type() == Node::Property) {
+ twoColumn = (nl.count() >= 5);
+ name_alignment = false;
+ }
+ if (name_alignment) {
+ out() << "<table class=\"alignedsummary\">\n";
+ }
+ else {
+ if (twoColumn)
+ out() << "<table class=\"propsummary\">\n"
+ << "<tr><td class=\"topAlign\">";
+ out() << "<ul>\n";
+ }
+
+ int i = 0;
+ NodeList::ConstIterator m = nl.begin();
+ while (m != nl.end()) {
+ if ((*m)->access() == Node::Private) {
+ ++m;
+ continue;
+ }
+
+ if (name_alignment) {
+ out() << "<tr><td class=\"memItemLeft rightAlign topAlign\"> ";
+ }
+ else {
+ if (twoColumn && i == (int) (nl.count() + 1) / 2)
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
+ out() << "<li class=\"fn\">";
+ }
+
+ generateSynopsis(*m, relative, marker, style, name_alignment);
+ if (name_alignment)
+ out() << "</td></tr>\n";
+ else
+ out() << "</li>\n";
+ i++;
+ ++m;
+ }
+ if (name_alignment)
+ out() << "</table>\n";
+ else {
+ out() << "</ul>\n";
+ if (twoColumn)
+ out() << "</td></tr>\n</table>\n";
+ }
+ }
+}
+
+void DitaXmlGenerator::generateSectionList(const Section& section,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style)
+{
+ bool name_alignment = true;
+ if (!section.members.isEmpty()) {
+ bool twoColumn = false;
+ if (style == CodeMarker::SeparateList) {
+ name_alignment = false;
+ twoColumn = (section.members.count() >= 16);
+ }
+ else if (section.members.first()->type() == Node::Property) {
+ twoColumn = (section.members.count() >= 5);
+ name_alignment = false;
+ }
+ if (name_alignment) {
+ out() << "<table class=\"alignedsummary\">\n";
+ }
+ else {
+ if (twoColumn)
+ out() << "<table class=\"propsummary\">\n"
+ << "<tr><td class=\"topAlign\">";
+ out() << "<ul>\n";
+ }
+
+ int i = 0;
+ NodeList::ConstIterator m = section.members.begin();
+ while (m != section.members.end()) {
+ if ((*m)->access() == Node::Private) {
+ ++m;
+ continue;
+ }
+
+ if (name_alignment) {
+ out() << "<tr><td class=\"memItemLeft topAlign rightAlign\"> ";
+ }
+ else {
+ if (twoColumn && i == (int) (section.members.count() + 1) / 2)
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
+ out() << "<li class=\"fn\">";
+ }
+
+ generateSynopsis(*m, relative, marker, style, name_alignment);
+ if (name_alignment)
+ out() << "</td></tr>\n";
+ else
+ out() << "</li>\n";
+ i++;
+ ++m;
+ }
+ if (name_alignment)
+ out() << "</table>\n";
+ else {
+ out() << "</ul>\n";
+ if (twoColumn)
+ out() << "</td></tr>\n</table>\n";
+ }
+ }
+
+ if (style == CodeMarker::Summary && !section.inherited.isEmpty()) {
+ out() << "<ul>\n";
+ generateSectionInheritedList(section, relative, marker, name_alignment);
+ out() << "</ul>\n";
+ }
+}
+
+void DitaXmlGenerator::generateSectionInheritedList(const Section& section,
+ const Node *relative,
+ CodeMarker *marker,
+ bool nameAlignment)
+{
+ QList<QPair<ClassNode *, int> >::ConstIterator p = section.inherited.begin();
+ while (p != section.inherited.end()) {
+ if (nameAlignment)
+ out() << "<li class=\"fn\">";
+ else
+ out() << "<li class=\"fn\">";
+ out() << (*p).second << " ";
+ if ((*p).second == 1) {
+ out() << section.singularMember;
+ }
+ else {
+ out() << section.pluralMember;
+ }
+ out() << " inherited from <a href=\"" << fileName((*p).first)
+ << "#" << DitaXmlGenerator::cleanRef(section.name.toLower()) << "\">"
+ << protectEnc(marker->plainFullName((*p).first, relative))
+ << "</a></li>\n";
+ ++p;
+ }
+}
+
+void DitaXmlGenerator::generateSynopsis(const Node *node,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style,
+ bool nameAlignment)
+{
+ QString marked = marker->markedUpSynopsis(node, relative, style);
+ QRegExp templateTag("(<[^@>]*>)");
+ if (marked.indexOf(templateTag) != -1) {
+ QString contents = protectEnc(marked.mid(templateTag.pos(1),
+ templateTag.cap(1).length()));
+ marked.replace(templateTag.pos(1), templateTag.cap(1).length(),
+ contents);
+ }
+ marked.replace(QRegExp("<@param>([a-z]+)_([1-9n])</@param>"),
+ "<i>\\1<sub>\\2</sub></i>");
+ marked.replace("<@param>", "<i>");
+ marked.replace("</@param>", "</i>");
+
+ if (style == CodeMarker::Summary) {
+ marked.replace("<@name>", ""); // was "<b>"
+ marked.replace("</@name>", ""); // was "</b>"
+ }
+
+ if (style == CodeMarker::SeparateList) {
+ QRegExp extraRegExp("<@extra>.*</@extra>");
+ extraRegExp.setMinimal(true);
+ marked.replace(extraRegExp, "");
+ } else {
+ marked.replace("<@extra>", "<tt>");
+ marked.replace("</@extra>", "</tt>");
+ }
+
+ if (style != CodeMarker::Detailed) {
+ marked.replace("<@type>", "");
+ marked.replace("</@type>", "");
+ }
+ out() << highlightedCode(marked, marker, relative, style, nameAlignment);
+}
+
+QString DitaXmlGenerator::highlightedCode(const QString& markedCode,
+ CodeMarker *marker,
+ const Node *relative,
+ CodeMarker::SynopsisStyle ,
+ bool nameAlignment)
+{
+ QString src = markedCode;
+ QString html;
+ QStringRef arg;
+ QStringRef par1;
+
+ const QChar charLangle = '<';
+ const QChar charAt = '@';
+
+ // replace all <@link> tags: "(<@link node=\"([^\"]+)\">).*(</@link>)"
+ static const QString linkTag("link");
+ bool done = false;
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle && src.at(i + 1).unicode() == '@') {
+ if (nameAlignment && !done) {// && (i != 0)) Why was this here?
+ html += "</td><td class=\"memItemRight bottomAlign\">";
+ done = true;
+ }
+ i += 2;
+ if (parseArg(src, linkTag, &i, n, &arg, &par1)) {
+ html += "<b>";
+ QString link = linkForNode(
+ CodeMarker::nodeForString(par1.toString()), relative);
+ addLink(link, arg, &html);
+ html += "</b>";
+ }
+ else {
+ html += charLangle;
+ html += charAt;
+ }
+ }
+ else {
+ html += src.at(i++);
+ }
+ }
+
+
+ if (slow) {
+ // is this block ever used at all?
+ // replace all <@func> tags: "(<@func target=\"([^\"]*)\">)(.*)(</@func>)"
+ src = html;
+ html = QString();
+ static const QString funcTag("func");
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle && src.at(i + 1) == charAt) {
+ i += 2;
+ if (parseArg(src, funcTag, &i, n, &arg, &par1)) {
+ QString link = linkForNode(
+ marker->resolveTarget(par1.toString(),
+ myTree,
+ relative),
+ relative);
+ addLink(link, arg, &html);
+ par1 = QStringRef();
+ }
+ else {
+ html += charLangle;
+ html += charAt;
+ }
+ }
+ else {
+ html += src.at(i++);
+ }
+ }
+ }
+
+ // replace all "(<@(type|headerfile|func)(?: +[^>]*)?>)(.*)(</@\\2>)" tags
+ src = html;
+ html = QString();
+ static const QString typeTags[] = { "type", "headerfile", "func" };
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle && src.at(i + 1) == charAt) {
+ i += 2;
+ bool handled = false;
+ for (int k = 0; k != 3; ++k) {
+ if (parseArg(src, typeTags[k], &i, n, &arg, &par1)) {
+ par1 = QStringRef();
+ QString link = linkForNode(
+ marker->resolveTarget(arg.toString(), myTree, relative),
+ relative);
+ addLink(link, arg, &html);
+ handled = true;
+ break;
+ }
+ }
+ if (!handled) {
+ html += charLangle;
+ html += charAt;
+ }
+ }
+ else {
+ html += src.at(i++);
+ }
+ }
+
+ // replace all
+ // "<@comment>" -> "<span class=\"comment\">";
+ // "<@preprocessor>" -> "<span class=\"preprocessor\">";
+ // "<@string>" -> "<span class=\"string\">";
+ // "<@char>" -> "<span class=\"char\">";
+ // "</@(?:comment|preprocessor|string|char)>" -> "</span>"
+ src = html;
+ html = QString();
+ static const QString spanTags[] = {
+ "<@comment>", "<span class=\"comment\">",
+ "<@preprocessor>", "<span class=\"preprocessor\">",
+ "<@string>", "<span class=\"string\">",
+ "<@char>", "<span class=\"char\">",
+ "</@comment>", "</span>",
+ "</@preprocessor>","</span>",
+ "</@string>", "</span>",
+ "</@char>", "</span>"
+ // "<@char>", "<font color=blue>",
+ // "</@char>", "</font>",
+ // "<@func>", "<font color=green>",
+ // "</@func>", "</font>",
+ // "<@id>", "<i>",
+ // "</@id>", "</i>",
+ // "<@keyword>", "<b>",
+ // "</@keyword>", "</b>",
+ // "<@number>", "<font color=yellow>",
+ // "</@number>", "</font>",
+ // "<@op>", "<b>",
+ // "</@op>", "</b>",
+ // "<@param>", "<i>",
+ // "</@param>", "</i>",
+ // "<@string>", "<font color=green>",
+ // "</@string>", "</font>",
+ };
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle) {
+ bool handled = false;
+ for (int k = 0; k != 8; ++k) {
+ const QString & tag = spanTags[2 * k];
+ if (tag == QStringRef(&src, i, tag.length())) {
+ html += spanTags[2 * k + 1];
+ i += tag.length();
+ handled = true;
+ break;
+ }
+ }
+ if (!handled) {
+ ++i;
+ if (src.at(i) == charAt ||
+ (src.at(i) == QLatin1Char('/') && src.at(i + 1) == charAt)) {
+ // drop 'our' unknown tags (the ones still containing '@')
+ while (i < n && src.at(i) != QLatin1Char('>'))
+ ++i;
+ ++i;
+ }
+ else {
+ // retain all others
+ html += charLangle;
+ }
+ }
+ }
+ else {
+ html += src.at(i);
+ ++i;
+ }
+ }
+
+ return html;
+}
+
+#else
+void DitaXmlGenerator::generateSectionList(const Section& section,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style)
+{
+ if (!section.members.isEmpty()) {
+ bool twoColumn = false;
+ if (style == CodeMarker::SeparateList) {
+ twoColumn = (section.members.count() >= 16);
+ }
+ else if (section.members.first()->type() == Node::Property) {
+ twoColumn = (section.members.count() >= 5);
+ }
+ if (twoColumn)
+ out() << "<table class=\"generic\">\n";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd topAlign\">";
+ else
+ out() << "<tr class=\"even topAlign\">";
+
+// << "<tr><td class=\"topAlign\">";
+ out() << "<ul>\n";
+
+ int i = 0;
+ NodeList::ConstIterator m = section.members.begin();
+ while (m != section.members.end()) {
+ if ((*m)->access() == Node::Private) {
+ ++m;
+ continue;
+ }
+
+ if (twoColumn && i == (int) (section.members.count() + 1) / 2)
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
+
+ out() << "<li class=\"fn\">";
+ if (style == CodeMarker::Accessors)
+ out() << "<b>";
+ generateSynopsis(*m, relative, marker, style);
+ if (style == CodeMarker::Accessors)
+ out() << "</b>";
+ out() << "</li>\n";
+ i++;
+ ++m;
+ }
+ out() << "</ul>\n";
+ if (twoColumn)
+ out() << "</td></tr>\n</table>\n";
+ }
+
+ if (style == CodeMarker::Summary && !section.inherited.isEmpty()) {
+ out() << "<ul>\n";
+ generateSectionInheritedList(section, relative, marker);
+ out() << "</ul>\n";
+ }
+}
+
+void DitaXmlGenerator::generateSectionInheritedList(const Section& section,
+ const Node *relative,
+ CodeMarker *marker)
+{
+ QList<QPair<ClassNode *, int> >::ConstIterator p = section.inherited.begin();
+ while (p != section.inherited.end()) {
+ out() << "<li class=\"fn\">";
+ out() << (*p).second << " ";
+ if ((*p).second == 1) {
+ out() << section.singularMember;
+ } else {
+ out() << section.pluralMember;
+ }
+ out() << " inherited from <a href=\"" << fileName((*p).first)
+ << "#" << DitaXmlGenerator::cleanRef(section.name.toLower()) << "\">"
+ << protectEnc(marker->plainFullName((*p).first, relative))
+ << "</a></li>\n";
+ ++p;
+ }
+}
+
+void DitaXmlGenerator::generateSynopsis(const Node *node,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style)
+{
+ QString marked = marker->markedUpSynopsis(node, relative, style);
+ QRegExp templateTag("(<[^@>]*>)");
+ if (marked.indexOf(templateTag) != -1) {
+ QString contents = protectEnc(marked.mid(templateTag.pos(1),
+ templateTag.cap(1).length()));
+ marked.replace(templateTag.pos(1), templateTag.cap(1).length(),
+ contents);
+ }
+ marked.replace(QRegExp("<@param>([a-z]+)_([1-9n])</@param>"), "<i>\\1<sub>\\2</sub></i>");
+ marked.replace("<@param>", "<i>");
+ marked.replace("</@param>", "</i>");
+
+ if (style == CodeMarker::Summary)
+ marked.replace("@name>", "b>");
+
+ if (style == CodeMarker::SeparateList) {
+ QRegExp extraRegExp("<@extra>.*</@extra>");
+ extraRegExp.setMinimal(true);
+ marked.replace(extraRegExp, "");
+ } else {
+ marked.replace("<@extra>", "<tt>");
+ marked.replace("</@extra>", "</tt>");
+ }
+
+ if (style != CodeMarker::Detailed) {
+ marked.replace("<@type>", "");
+ marked.replace("</@type>", "");
+ }
+ out() << highlightedCode(marked, marker, relative);
+}
+
+QString DitaXmlGenerator::highlightedCode(const QString& markedCode,
+ CodeMarker *marker,
+ const Node *relative)
+{
+ QString src = markedCode;
+ QString html;
+ QStringRef arg;
+ QStringRef par1;
+
+ const QChar charLangle = '<';
+ const QChar charAt = '@';
+
+ // replace all <@link> tags: "(<@link node=\"([^\"]+)\">).*(</@link>)"
+ static const QString linkTag("link");
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle && src.at(i + 1) == charAt) {
+ i += 2;
+ if (parseArg(src, linkTag, &i, n, &arg, &par1)) {
+ const Node* node = CodeMarker::nodeForString(par1.toString());
+ QString link = linkForNode(node, relative);
+ addLink(link, arg, &html);
+ }
+ else {
+ html += charLangle;
+ html += charAt;
+ }
+ }
+ else {
+ html += src.at(i++);
+ }
+ }
+
+ if (slow) {
+ // is this block ever used at all?
+ // replace all <@func> tags: "(<@func target=\"([^\"]*)\">)(.*)(</@func>)"
+ src = html;
+ html = QString();
+ static const QString funcTag("func");
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle && src.at(i + 1) == charAt) {
+ i += 2;
+ if (parseArg(src, funcTag, &i, n, &arg, &par1)) {
+ QString link = linkForNode(
+ marker->resolveTarget(par1.toString(),
+ myTree,
+ relative),
+ relative);
+ addLink(link, arg, &html);
+ par1 = QStringRef();
+ }
+ else {
+ html += charLangle;
+ html += charAt;
+ }
+ }
+ else {
+ html += src.at(i++);
+ }
+ }
+ }
+
+ // replace all "(<@(type|headerfile|func)(?: +[^>]*)?>)(.*)(</@\\2>)" tags
+ src = html;
+ html = QString();
+ static const QString typeTags[] = { "type", "headerfile", "func" };
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle && src.at(i + 1) == charAt) {
+ i += 2;
+ bool handled = false;
+ for (int k = 0; k != 3; ++k) {
+ if (parseArg(src, typeTags[k], &i, n, &arg, &par1)) {
+ par1 = QStringRef();
+ QString link = linkForNode(
+ marker->resolveTarget(arg.toString(), myTree, relative),
+ relative);
+ addLink(link, arg, &html);
+ handled = true;
+ break;
+ }
+ }
+ if (!handled) {
+ html += charLangle;
+ html += charAt;
+ }
+ }
+ else {
+ html += src.at(i++);
+ }
+ }
+
+ // replace all
+ // "<@comment>" -> "<span class=\"comment\">";
+ // "<@preprocessor>" -> "<span class=\"preprocessor\">";
+ // "<@string>" -> "<span class=\"string\">";
+ // "<@char>" -> "<span class=\"char\">";
+ // "</@(?:comment|preprocessor|string|char)>" -> "</span>"
+ src = html;
+ html = QString();
+ static const QString spanTags[] = {
+ "<@comment>", "<span class=\"comment\">",
+ "<@preprocessor>", "<span class=\"preprocessor\">",
+ "<@string>", "<span class=\"string\">",
+ "<@char>", "<span class=\"char\">",
+ "</@comment>", "</span>",
+ "</@preprocessor>","</span>",
+ "</@string>", "</span>",
+ "</@char>", "</span>"
+ // "<@char>", "<font color=blue>",
+ // "</@char>", "</font>",
+ // "<@func>", "<font color=green>",
+ // "</@func>", "</font>",
+ // "<@id>", "<i>",
+ // "</@id>", "</i>",
+ // "<@keyword>", "<b>",
+ // "</@keyword>", "</b>",
+ // "<@number>", "<font color=yellow>",
+ // "</@number>", "</font>",
+ // "<@op>", "<b>",
+ // "</@op>", "</b>",
+ // "<@param>", "<i>",
+ // "</@param>", "</i>",
+ // "<@string>", "<font color=green>",
+ // "</@string>", "</font>",
+ };
+ for (int i = 0, n = src.size(); i < n;) {
+ if (src.at(i) == charLangle) {
+ bool handled = false;
+ for (int k = 0; k != 8; ++k) {
+ const QString & tag = spanTags[2 * k];
+ if (tag == QStringRef(&src, i, tag.length())) {
+ html += spanTags[2 * k + 1];
+ i += tag.length();
+ handled = true;
+ break;
+ }
+ }
+ if (!handled) {
+ ++i;
+ if (src.at(i) == charAt ||
+ (src.at(i) == QLatin1Char('/') && src.at(i + 1) == charAt)) {
+ // drop 'our' unknown tags (the ones still containing '@')
+ while (i < n && src.at(i) != QLatin1Char('>'))
+ ++i;
+ ++i;
+ }
+ else {
+ // retain all others
+ html += charLangle;
+ }
+ }
+ }
+ else {
+ html += src.at(i);
+ ++i;
+ }
+ }
+
+ return html;
+}
+#endif
+
+void DitaXmlGenerator::generateLink(const Atom* atom,
+ const Node* /* relative */,
+ CodeMarker* marker)
+{
+ static QRegExp camelCase("[A-Z][A-Z][a-z]|[a-z][A-Z0-9]|_");
+
+ if (funcLeftParen.indexIn(atom->string()) != -1 && marker->recognizeLanguage("Cpp")) {
+ // hack for C++: move () outside of link
+ int k = funcLeftParen.pos(1);
+ out() << protectEnc(atom->string().left(k));
+ if (link.isEmpty()) {
+ if (showBrokenLinks)
+ out() << "</i>";
+ } else {
+ out() << "</a>";
+ }
+ inLink = false;
+ out() << protectEnc(atom->string().mid(k));
+ } else if (marker->recognizeLanguage("Java")) {
+ // hack for Java: remove () and use <tt> when appropriate
+ bool func = atom->string().endsWith("()");
+ bool tt = (func || atom->string().contains(camelCase));
+ if (tt)
+ out() << "<tt>";
+ if (func) {
+ out() << protectEnc(atom->string().left(atom->string().length() - 2));
+ } else {
+ out() << protectEnc(atom->string());
+ }
+ out() << "</tt>";
+ } else {
+ out() << protectEnc(atom->string());
+ }
+}
+
+QString DitaXmlGenerator::cleanRef(const QString& ref)
+{
+ QString clean;
+
+ if (ref.isEmpty())
+ return clean;
+
+ clean.reserve(ref.size() + 20);
+ const QChar c = ref[0];
+ const uint u = c.unicode();
+
+ if ((u >= 'a' && u <= 'z') ||
+ (u >= 'A' && u <= 'Z') ||
+ (u >= '0' && u <= '9')) {
+ clean += c;
+ } else if (u == '~') {
+ clean += "dtor.";
+ } else if (u == '_') {
+ clean += "underscore.";
+ } else {
+ clean += "A";
+ }
+
+ for (int i = 1; i < (int) ref.length(); i++) {
+ const QChar c = ref[i];
+ const uint u = c.unicode();
+ if ((u >= 'a' && u <= 'z') ||
+ (u >= 'A' && u <= 'Z') ||
+ (u >= '0' && u <= '9') || u == '-' ||
+ u == '_' || u == ':' || u == '.') {
+ clean += c;
+ } else if (c.isSpace()) {
+ clean += "-";
+ } else if (u == '!') {
+ clean += "-not";
+ } else if (u == '&') {
+ clean += "-and";
+ } else if (u == '<') {
+ clean += "-lt";
+ } else if (u == '=') {
+ clean += "-eq";
+ } else if (u == '>') {
+ clean += "-gt";
+ } else if (u == '#') {
+ clean += "#";
+ } else {
+ clean += "-";
+ clean += QString::number((int)u, 16);
+ }
+ }
+ return clean;
+}
+
+QString DitaXmlGenerator::registerRef(const QString& ref)
+{
+ QString clean = DitaXmlGenerator::cleanRef(ref);
+
+ for (;;) {
+ QString& prevRef = refMap[clean.toLower()];
+ if (prevRef.isEmpty()) {
+ prevRef = ref;
+ break;
+ } else if (prevRef == ref) {
+ break;
+ }
+ clean += "x";
+ }
+ return clean;
+}
+
+QString DitaXmlGenerator::protectEnc(const QString &string)
+{
+ return protect(string, outputEncoding);
+}
+
+QString DitaXmlGenerator::protect(const QString &string, const QString &outputEncoding)
+{
+#define APPEND(x) \
+ if (html.isEmpty()) { \
+ html = string; \
+ html.truncate(i); \
+ } \
+ html += (x);
+
+ QString html;
+ int n = string.length();
+
+ for (int i = 0; i < n; ++i) {
+ QChar ch = string.at(i);
+
+ if (ch == QLatin1Char('&')) {
+ APPEND("&amp;");
+ } else if (ch == QLatin1Char('<')) {
+ APPEND("&lt;");
+ } else if (ch == QLatin1Char('>')) {
+ APPEND("&gt;");
+ } else if (ch == QLatin1Char('"')) {
+ APPEND("&quot;");
+ } else if ((outputEncoding == "ISO-8859-1" && ch.unicode() > 0x007F)
+ || (ch == QLatin1Char('*') && i + 1 < n && string.at(i) == QLatin1Char('/'))
+ || (ch == QLatin1Char('.') && i > 2 && string.at(i - 2) == QLatin1Char('.'))) {
+ // we escape '*/' and the last dot in 'e.g.' and 'i.e.' for the Javadoc generator
+ APPEND("&#x");
+ html += QString::number(ch.unicode(), 16);
+ html += QLatin1Char(';');
+ } else {
+ if (!html.isEmpty())
+ html += ch;
+ }
+ }
+
+ if (!html.isEmpty())
+ return html;
+ return string;
+
+#undef APPEND
+}
+
+QString DitaXmlGenerator::fileBase(const Node *node)
+{
+ QString result;
+
+ result = PageGenerator::fileBase(node);
+
+ if (!node->isInnerNode()) {
+ switch (node->status()) {
+ case Node::Compat:
+ result += "-qt3";
+ break;
+ case Node::Obsolete:
+ result += "-obsolete";
+ break;
+ default:
+ ;
+ }
+ }
+ return result;
+}
+
+#if 0
+QString DitaXmlGenerator::fileBase(const Node *node,
+ const SectionIterator& section)
+{
+ QStringList::ConstIterator s = section.sectionNumber().end();
+ QStringList::ConstIterator b = section.baseNameStack().end();
+
+ QString suffix;
+ QString base = fileBase(node);
+
+ while (s != section.sectionNumber().begin()) {
+ --s;
+ --b;
+ if (!(*b).isEmpty()) {
+ base = *b;
+ break;
+ }
+ suffix.prepend("-" + *s);
+ }
+ return base + suffix;
+}
+#endif
+
+QString DitaXmlGenerator::fileName(const Node *node)
+{
+ if (node->type() == Node::Fake) {
+ if (static_cast<const FakeNode *>(node)->subType() == Node::ExternalPage)
+ return node->name();
+ if (static_cast<const FakeNode *>(node)->subType() == Node::Image)
+ return node->name();
+ }
+ return PageGenerator::fileName(node);
+}
+
+QString DitaXmlGenerator::refForNode(const Node *node)
+{
+ const FunctionNode *func;
+ const TypedefNode *typedeffe;
+ QString ref;
+
+ switch (node->type()) {
+ case Node::Namespace:
+ case Node::Class:
+ default:
+ break;
+ case Node::Enum:
+ ref = node->name() + "-enum";
+ break;
+ case Node::Typedef:
+ typedeffe = static_cast<const TypedefNode *>(node);
+ if (typedeffe->associatedEnum()) {
+ return refForNode(typedeffe->associatedEnum());
+ }
+ else {
+ ref = node->name() + "-typedef";
+ }
+ break;
+ case Node::Function:
+ func = static_cast<const FunctionNode *>(node);
+ if (func->associatedProperty()) {
+ return refForNode(func->associatedProperty());
+ }
+ else {
+ ref = func->name();
+ if (func->overloadNumber() != 1)
+ ref += "-" + QString::number(func->overloadNumber());
+ }
+ break;
+#ifdef QDOC_QML
+ case Node::Fake:
+ if (node->subType() != Node::QmlPropertyGroup)
+ break;
+ case Node::QmlProperty:
+#endif
+ case Node::Property:
+ ref = node->name() + "-prop";
+ break;
+#ifdef QDOC_QML
+ case Node::QmlSignal:
+ ref = node->name() + "-signal";
+ break;
+ case Node::QmlMethod:
+ ref = node->name() + "-method";
+ break;
+#endif
+ case Node::Variable:
+ ref = node->name() + "-var";
+ break;
+ case Node::Target:
+ return protectEnc(node->name());
+ }
+ return registerRef(ref);
+}
+
+QString DitaXmlGenerator::linkForNode(const Node *node, const Node *relative)
+{
+ QString link;
+ QString fn;
+ QString ref;
+
+ if (node == 0 || node == relative)
+ return QString();
+ if (!node->url().isEmpty())
+ return node->url();
+ if (fileBase(node).isEmpty())
+ return QString();
+ if (node->access() == Node::Private)
+ return QString();
+
+ fn = fileName(node);
+/* if (!node->url().isEmpty())
+ return fn;*/
+#if 0
+ // ### reintroduce this test, without breaking .dcf files
+ if (fn != outFileName())
+#endif
+ link += fn;
+
+ if (!node->isInnerNode() || node->subType() == Node::QmlPropertyGroup) {
+ ref = refForNode(node);
+ if (relative && fn == fileName(relative) && ref == refForNode(relative))
+ return QString();
+
+ link += "#";
+ link += ref;
+ }
+ return link;
+}
+
+QString DitaXmlGenerator::refForAtom(Atom *atom, const Node * /* node */)
+{
+ if (atom->type() == Atom::SectionLeft) {
+ return Doc::canonicalTitle(Text::sectionHeading(atom).toString());
+ }
+ else if (atom->type() == Atom::Target) {
+ return Doc::canonicalTitle(atom->string());
+ }
+ else {
+ return QString();
+ }
+}
+
+void DitaXmlGenerator::generateFullName(const Node *apparentNode,
+ const Node *relative,
+ CodeMarker *marker,
+ const Node *actualNode)
+{
+ if (actualNode == 0)
+ actualNode = apparentNode;
+ out() << "<a href=\"" << linkForNode(actualNode, relative);
+ if (true || relative == 0 || relative->status() != actualNode->status()) {
+ switch (actualNode->status()) {
+ case Node::Obsolete:
+ out() << "\" class=\"obsolete";
+ break;
+ case Node::Compat:
+ out() << "\" class=\"compat";
+ break;
+ default:
+ ;
+ }
+ }
+ out() << "\">";
+ out() << protectEnc(fullName(apparentNode, relative, marker));
+ out() << "</a>";
+}
+
+void DitaXmlGenerator::generateDetailedMember(const Node *node,
+ const InnerNode *relative,
+ CodeMarker *marker)
+{
+ const EnumNode *enume;
+
+#ifdef GENERATE_MAC_REFS
+ generateMacRef(node, marker);
+#endif
+ if (node->type() == Node::Enum
+ && (enume = static_cast<const EnumNode *>(node))->flagsType()) {
+#ifdef GENERATE_MAC_REFS
+ generateMacRef(enume->flagsType(), marker);
+#endif
+ out() << "<h3 class=\"flags\">";
+ out() << "<a name=\"" + refForNode(node) + "\"></a>";
+ generateSynopsis(enume, relative, marker, CodeMarker::Detailed);
+ out() << "<br/>";
+ generateSynopsis(enume->flagsType(),
+ relative,
+ marker,
+ CodeMarker::Detailed);
+ out() << "</h3>\n";
+ }
+ else {
+ out() << "<h3 class=\"fn\">";
+ out() << "<a name=\"" + refForNode(node) + "\"></a>";
+ generateSynopsis(node, relative, marker, CodeMarker::Detailed);
+ out() << "</h3>\n";
+ }
+
+ generateStatus(node, marker);
+ generateBody(node, marker);
+ generateThreadSafeness(node, marker);
+ generateSince(node, marker);
+
+ if (node->type() == Node::Property) {
+ const PropertyNode *property = static_cast<const PropertyNode *>(node);
+ Section section;
+
+ section.members += property->getters();
+ section.members += property->setters();
+ section.members += property->resetters();
+
+ if (!section.members.isEmpty()) {
+ out() << "<p><b>Access functions:</b></p>\n";
+ generateSectionList(section, node, marker, CodeMarker::Accessors);
+ }
+
+ Section notifiers;
+ notifiers.members += property->notifiers();
+
+ if (!notifiers.members.isEmpty()) {
+ out() << "<p><b>Notifier signal:</b></p>\n";
+ //out() << "<p>This signal is emitted when the property value is changed.</p>\n";
+ generateSectionList(notifiers, node, marker, CodeMarker::Accessors);
+ }
+ }
+ else if (node->type() == Node::Enum) {
+ const EnumNode *enume = static_cast<const EnumNode *>(node);
+ if (enume->flagsType()) {
+ out() << "<p>The " << protectEnc(enume->flagsType()->name())
+ << " type is a typedef for "
+ << "<a href=\"qflags.html\">QFlags</a>&lt;"
+ << protectEnc(enume->name())
+ << "&gt;. It stores an OR combination of "
+ << protectEnc(enume->name())
+ << " values.</p>\n";
+ }
+ }
+ generateAlsoList(node, marker);
+}
+
+void DitaXmlGenerator::findAllClasses(const InnerNode *node)
+{
+ NodeList::const_iterator c = node->childNodes().constBegin();
+ while (c != node->childNodes().constEnd()) {
+ if ((*c)->access() != Node::Private && (*c)->url().isEmpty()) {
+ if ((*c)->type() == Node::Class && !(*c)->doc().isEmpty()) {
+ QString className = (*c)->name();
+ if ((*c)->parent() &&
+ (*c)->parent()->type() == Node::Namespace &&
+ !(*c)->parent()->name().isEmpty())
+ className = (*c)->parent()->name()+"::"+className;
+
+ if (!(static_cast<const ClassNode *>(*c))->hideFromMainList()) {
+ if ((*c)->status() == Node::Compat) {
+ compatClasses.insert(className, *c);
+ }
+ else if ((*c)->status() == Node::Obsolete) {
+ obsoleteClasses.insert(className, *c);
+ }
+ else {
+ nonCompatClasses.insert(className, *c);
+ if ((*c)->status() == Node::Main)
+ mainClasses.insert(className, *c);
+ }
+ }
+
+ QString moduleName = (*c)->moduleName();
+ if (moduleName == "Qt3SupportLight") {
+ moduleClassMap[moduleName].insert((*c)->name(), *c);
+ moduleName = "Qt3Support";
+ }
+ if (!moduleName.isEmpty())
+ moduleClassMap[moduleName].insert((*c)->name(), *c);
+
+ QString serviceName =
+ (static_cast<const ClassNode *>(*c))->serviceName();
+ if (!serviceName.isEmpty())
+ serviceClasses.insert(serviceName, *c);
+ }
+ else if ((*c)->isInnerNode()) {
+ findAllClasses(static_cast<InnerNode *>(*c));
+ }
+ }
+ ++c;
+ }
+}
+
+/*!
+ For generating the "New Classes... in 4.6" section on the
+ What's New in 4.6" page.
+ */
+void DitaXmlGenerator::findAllSince(const InnerNode *node)
+{
+ NodeList::const_iterator child = node->childNodes().constBegin();
+ while (child != node->childNodes().constEnd()) {
+ QString sinceVersion = (*child)->since();
+ if (((*child)->access() != Node::Private) && !sinceVersion.isEmpty()) {
+ NewSinceMaps::iterator nsmap = newSinceMaps.find(sinceVersion);
+ if (nsmap == newSinceMaps.end())
+ nsmap = newSinceMaps.insert(sinceVersion,NodeMultiMap());
+ NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
+ if (ncmap == newClassMaps.end())
+ ncmap = newClassMaps.insert(sinceVersion,NodeMap());
+ NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
+ if (nqcmap == newQmlClassMaps.end())
+ nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
+
+ if ((*child)->type() == Node::Function) {
+ FunctionNode *func = static_cast<FunctionNode *>(*child);
+ if ((func->status() > Node::Obsolete) &&
+ (func->metaness() != FunctionNode::Ctor) &&
+ (func->metaness() != FunctionNode::Dtor)) {
+ nsmap.value().insert(func->name(),(*child));
+ }
+ }
+ else if ((*child)->url().isEmpty()) {
+ if ((*child)->type() == Node::Class && !(*child)->doc().isEmpty()) {
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+ nsmap.value().insert(className,(*child));
+ ncmap.value().insert(className,(*child));
+ }
+ else if ((*child)->subType() == Node::QmlClass) {
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+ nsmap.value().insert(className,(*child));
+ nqcmap.value().insert(className,(*child));
+ }
+ }
+ else {
+ QString name = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ name = (*child)->parent()->name()+"::"+name;
+ nsmap.value().insert(name,(*child));
+ }
+ if ((*child)->isInnerNode()) {
+ findAllSince(static_cast<InnerNode *>(*child));
+ }
+ }
+ ++child;
+ }
+}
+
+#if 0
+ const QRegExp versionSeparator("[\\-\\.]");
+ const int minorIndex = version.indexOf(versionSeparator);
+ const int patchIndex = version.indexOf(versionSeparator, minorIndex+1);
+ version = version.left(patchIndex);
+#endif
+
+void DitaXmlGenerator::findAllFunctions(const InnerNode *node)
+{
+ NodeList::ConstIterator c = node->childNodes().begin();
+ while (c != node->childNodes().end()) {
+ if ((*c)->access() != Node::Private) {
+ if ((*c)->isInnerNode() && (*c)->url().isEmpty()) {
+ findAllFunctions(static_cast<const InnerNode *>(*c));
+ }
+ else if ((*c)->type() == Node::Function) {
+ const FunctionNode *func = static_cast<const FunctionNode *>(*c);
+ if ((func->status() > Node::Obsolete) &&
+ (func->metaness() != FunctionNode::Ctor) &&
+ (func->metaness() != FunctionNode::Dtor)) {
+ funcIndex[(*c)->name()].insert(myTree->fullDocumentName((*c)->parent()), *c);
+ }
+ }
+ }
+ ++c;
+ }
+}
+
+void DitaXmlGenerator::findAllLegaleseTexts(const InnerNode *node)
+{
+ NodeList::ConstIterator c = node->childNodes().begin();
+ while (c != node->childNodes().end()) {
+ if ((*c)->access() != Node::Private) {
+ if (!(*c)->doc().legaleseText().isEmpty())
+ legaleseTexts.insertMulti((*c)->doc().legaleseText(), *c);
+ if ((*c)->isInnerNode())
+ findAllLegaleseTexts(static_cast<const InnerNode *>(*c));
+ }
+ ++c;
+ }
+}
+
+void DitaXmlGenerator::findAllNamespaces(const InnerNode *node)
+{
+ NodeList::ConstIterator c = node->childNodes().begin();
+ while (c != node->childNodes().end()) {
+ if ((*c)->access() != Node::Private) {
+ if ((*c)->isInnerNode() && (*c)->url().isEmpty()) {
+ findAllNamespaces(static_cast<const InnerNode *>(*c));
+ if ((*c)->type() == Node::Namespace) {
+ const NamespaceNode *nspace = static_cast<const NamespaceNode *>(*c);
+ // Ensure that the namespace's name is not empty (the root
+ // namespace has no name).
+ if (!nspace->name().isEmpty()) {
+ namespaceIndex.insert(nspace->name(), *c);
+ QString moduleName = (*c)->moduleName();
+ if (moduleName == "Qt3SupportLight") {
+ moduleNamespaceMap[moduleName].insert((*c)->name(), *c);
+ moduleName = "Qt3Support";
+ }
+ if (!moduleName.isEmpty())
+ moduleNamespaceMap[moduleName].insert((*c)->name(), *c);
+ }
+ }
+ }
+ }
+ ++c;
+ }
+}
+
+#ifdef ZZZ_QDOC_QML
+/*!
+ This function finds all the qml element nodes and
+ stores them in a map for later use.
+ */
+void DitaXmlGenerator::findAllQmlClasses(const InnerNode *node)
+{
+ NodeList::const_iterator c = node->childNodes().constBegin();
+ while (c != node->childNodes().constEnd()) {
+ if ((*c)->type() == Node::Fake) {
+ const FakeNode* fakeNode = static_cast<const FakeNode *>(*c);
+ if (fakeNode->subType() == Node::QmlClass) {
+ const QmlClassNode* qmlNode =
+ static_cast<const QmlClassNode*>(fakeNode);
+ const Node* n = qmlNode->classNode();
+ }
+ qmlClasses.insert(fakeNode->name(),*c);
+ }
+ ++c;
+ }
+}
+#endif
+
+int DitaXmlGenerator::hOffset(const Node *node)
+{
+ switch (node->type()) {
+ case Node::Namespace:
+ case Node::Class:
+ return 2;
+ case Node::Fake:
+ return 1;
+#if 0
+ if (node->doc().briefText().isEmpty())
+ return 1;
+ else
+ return 2;
+#endif
+ case Node::Enum:
+ case Node::Typedef:
+ case Node::Function:
+ case Node::Property:
+ default:
+ return 3;
+ }
+}
+
+bool DitaXmlGenerator::isThreeColumnEnumValueTable(const Atom *atom)
+{
+ while (atom != 0 && !(atom->type() == Atom::ListRight && atom->string() == ATOM_LIST_VALUE)) {
+ if (atom->type() == Atom::ListItemLeft && !matchAhead(atom, Atom::ListItemRight))
+ return true;
+ atom = atom->next();
+ }
+ return false;
+}
+
+const Node *DitaXmlGenerator::findNodeForTarget(const QString &target,
+ const Node *relative,
+ CodeMarker *marker,
+ const Atom *atom)
+{
+ const Node *node = 0;
+
+ if (target.isEmpty()) {
+ node = relative;
+ }
+ else if (target.endsWith(".html")) {
+ node = myTree->root()->findNode(target, Node::Fake);
+ }
+ else if (marker) {
+ node = marker->resolveTarget(target, myTree, relative);
+ if (!node)
+ node = myTree->findFakeNodeByTitle(target);
+ if (!node && atom) {
+ node = myTree->findUnambiguousTarget(target,
+ *const_cast<Atom**>(&atom));
+ }
+ }
+
+ if (!node)
+ relative->doc().location().warning(tr("Cannot link to '%1'").arg(target));
+
+ return node;
+}
+
+const QPair<QString,QString> DitaXmlGenerator::anchorForNode(const Node *node)
+{
+ QPair<QString,QString> anchorPair;
+
+ anchorPair.first = PageGenerator::fileName(node);
+ if (node->type() == Node::Fake) {
+ const FakeNode *fakeNode = static_cast<const FakeNode*>(node);
+ anchorPair.second = fakeNode->title();
+ }
+
+ return anchorPair;
+}
+
+QString DitaXmlGenerator::getLink(const Atom *atom,
+ const Node *relative,
+ CodeMarker *marker,
+ const Node** node)
+{
+ QString link;
+ *node = 0;
+ inObsoleteLink = false;
+
+ if (atom->string().contains(":") &&
+ (atom->string().startsWith("file:")
+ || atom->string().startsWith("http:")
+ || atom->string().startsWith("https:")
+ || atom->string().startsWith("ftp:")
+ || atom->string().startsWith("mailto:"))) {
+
+ link = atom->string();
+ }
+ else {
+ QStringList path;
+ if (atom->string().contains('#')) {
+ path = atom->string().split('#');
+ }
+ else {
+ path.append(atom->string());
+ }
+
+ Atom *targetAtom = 0;
+
+ QString first = path.first().trimmed();
+ if (first.isEmpty()) {
+ *node = relative;
+ }
+ else if (first.endsWith(".html")) {
+ *node = myTree->root()->findNode(first, Node::Fake);
+ }
+ else {
+ *node = marker->resolveTarget(first, myTree, relative);
+ if (!*node) {
+ *node = myTree->findFakeNodeByTitle(first);
+ }
+ if (!*node) {
+ *node = myTree->findUnambiguousTarget(first, targetAtom);
+ }
+ }
+
+ if (*node) {
+ if (!(*node)->url().isEmpty())
+ return (*node)->url();
+ else
+ path.removeFirst();
+ }
+ else {
+ *node = relative;
+ }
+
+ if (*node) {
+ if ((*node)->status() == Node::Obsolete) {
+ if (relative) {
+ if (relative->parent() != *node) {
+ if (relative->status() != Node::Obsolete) {
+ bool porting = false;
+ if (relative->type() == Node::Fake) {
+ const FakeNode* fake = static_cast<const FakeNode*>(relative);
+ if (fake->title().startsWith("Porting"))
+ porting = true;
+ }
+ QString name = marker->plainFullName(relative);
+ if (!porting && !name.startsWith("Q3")) {
+ if (obsoleteLinks) {
+ relative->doc().location().warning(tr("Link to obsolete item '%1' in %2")
+ .arg(atom->string())
+ .arg(name));
+ }
+ inObsoleteLink = true;
+ }
+ }
+ }
+ }
+ else {
+ qDebug() << "Link to Obsolete entity"
+ << (*node)->name() << "no relative";
+ }
+ }
+#if 0
+ else if ((*node)->status() == Node::Deprecated) {
+ qDebug() << "Link to Deprecated entity";
+ }
+ else if ((*node)->status() == Node::Internal) {
+ qDebug() << "Link to Internal entity";
+ }
+#endif
+ }
+
+ while (!path.isEmpty()) {
+ targetAtom = myTree->findTarget(path.first(), *node);
+ if (targetAtom == 0)
+ break;
+ path.removeFirst();
+ }
+
+ if (path.isEmpty()) {
+ link = linkForNode(*node, relative);
+ if (*node && (*node)->subType() == Node::Image)
+ link = "images/used-in-examples/" + link;
+ if (targetAtom)
+ link += "#" + refForAtom(targetAtom, *node);
+ }
+ }
+ return link;
+}
+
+void DitaXmlGenerator::generateDcf(const QString &fileBase,
+ const QString &startPage,
+ const QString &title,
+ DcfSection &dcfRoot)
+{
+ dcfRoot.ref = startPage;
+ dcfRoot.title = title;
+ generateDcfSections(dcfRoot, outputDir() + "/" + fileBase + ".dcf", fileBase + "/reference");
+}
+
+void DitaXmlGenerator::generateIndex(const QString &fileBase,
+ const QString &url,
+ const QString &title)
+{
+ myTree->generateIndex(outputDir() + "/" + fileBase + ".index", url, title);
+}
+
+void DitaXmlGenerator::generateStatus(const Node *node, CodeMarker *marker)
+{
+ Text text;
+
+ switch (node->status()) {
+ case Node::Obsolete:
+ if (node->isInnerNode())
+ Generator::generateStatus(node, marker);
+ break;
+ case Node::Compat:
+ if (node->isInnerNode()) {
+ text << Atom::ParaLeft
+ << Atom(Atom::FormattingLeft,ATOM_FORMATTING_BOLD)
+ << "This "
+ << typeString(node)
+ << " is part of the Qt 3 support library."
+ << Atom(Atom::FormattingRight, ATOM_FORMATTING_BOLD)
+ << " It is provided to keep old source code working. "
+ << "We strongly advise against "
+ << "using it in new code. See ";
+
+ const FakeNode *fakeNode = myTree->findFakeNodeByTitle("Porting To Qt 4");
+ Atom *targetAtom = 0;
+ if (fakeNode && node->type() == Node::Class) {
+ QString oldName(node->name());
+ targetAtom = myTree->findTarget(oldName.replace("3", ""),
+ fakeNode);
+ }
+
+ if (targetAtom) {
+ text << Atom(Atom::Link, linkForNode(fakeNode, node) + "#" +
+ refForAtom(targetAtom, fakeNode));
+ }
+ else
+ text << Atom(Atom::Link, "Porting to Qt 4");
+
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK)
+ << Atom(Atom::String, "Porting to Qt 4")
+ << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK)
+ << " for more information."
+ << Atom::ParaRight;
+ }
+ generateText(text, node, marker);
+ break;
+ default:
+ Generator::generateStatus(node, marker);
+ }
+}
+
+#ifdef GENERATE_MAC_REFS
+/*
+ No longer valid.
+ */
+void DitaXmlGenerator::generateMacRef(const Node *node, CodeMarker *marker)
+{
+ if (!pleaseGenerateMacRef || marker == 0)
+ return;
+
+ QStringList macRefs = marker->macRefsForNode(node);
+ foreach (const QString &macRef, macRefs)
+ out() << "<a name=\"" << "//apple_ref/" << macRef << "\"></a>\n";
+}
+#endif
+
+void DitaXmlGenerator::beginLink(const QString &link,
+ const Node *node,
+ const Node *relative,
+ CodeMarker *marker)
+{
+ Q_UNUSED(marker)
+ Q_UNUSED(relative)
+
+ this->link = link;
+ if (link.isEmpty()) {
+ if (showBrokenLinks)
+ out() << "<i>";
+ }
+ else if (node == 0 || (relative != 0 &&
+ node->status() == relative->status())) {
+ out() << "<a href=\"" << link << "\">";
+ }
+ else {
+ switch (node->status()) {
+ case Node::Obsolete:
+ out() << "<a href=\"" << link << "\" class=\"obsolete\">";
+ break;
+ case Node::Compat:
+ out() << "<a href=\"" << link << "\" class=\"compat\">";
+ break;
+ default:
+ out() << "<a href=\"" << link << "\">";
+ }
+ }
+ inLink = true;
+}
+
+void DitaXmlGenerator::endLink()
+{
+ if (inLink) {
+ if (link.isEmpty()) {
+ if (showBrokenLinks)
+ out() << "</i>";
+ }
+ else {
+ if (inObsoleteLink) {
+ out() << "<sup>(obsolete)</sup>";
+ }
+ out() << "</a>";
+ }
+ }
+ inLink = false;
+ inObsoleteLink = false;
+}
+
+#ifdef QDOC_QML
+
+/*!
+ Generates the summary for the \a section. Only used for
+ sections of QML element documentation.
+
+ Currently handles only the QML property group.
+ */
+void DitaXmlGenerator::generateQmlSummary(const Section& section,
+ const Node *relative,
+ CodeMarker *marker)
+{
+ if (!section.members.isEmpty()) {
+ NodeList::ConstIterator m;
+ int count = section.members.size();
+ bool twoColumn = false;
+ if (section.members.first()->type() == Node::QmlProperty) {
+ twoColumn = (count >= 5);
+ }
+ if (twoColumn)
+ out() << "<table class=\"qmlsummary\">\n";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd topAlign\">";
+ else
+ out() << "<tr class=\"even topAlign\">";
+ // << "<tr><td class=\"topAlign\">";
+ out() << "<ul>\n";
+
+ int row = 0;
+ m = section.members.begin();
+ while (m != section.members.end()) {
+ if (twoColumn && row == (int) (count + 1) / 2)
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
+ out() << "<li class=\"fn\">";
+ generateQmlItem(*m,relative,marker,true);
+ out() << "</li>\n";
+ row++;
+ ++m;
+ }
+ out() << "</ul>\n";
+ if (twoColumn)
+ out() << "</td></tr>\n</table>\n";
+ }
+}
+
+/*!
+ Outputs the html detailed documentation for a section
+ on a QML element reference page.
+ */
+void DitaXmlGenerator::generateDetailedQmlMember(const Node *node,
+ const InnerNode *relative,
+ CodeMarker *marker)
+{
+ const QmlPropertyNode* qpn = 0;
+#ifdef GENERATE_MAC_REFS
+ generateMacRef(node, marker);
+#endif
+ out() << "<div class=\"qmlitem\">";
+ if (node->subType() == Node::QmlPropertyGroup) {
+ const QmlPropGroupNode* qpgn = static_cast<const QmlPropGroupNode*>(node);
+ NodeList::ConstIterator p = qpgn->childNodes().begin();
+ out() << "<div class=\"qmlproto\">";
+ out() << "<table class=\"qmlname\">";
+
+ while (p != qpgn->childNodes().end()) {
+ if ((*p)->type() == Node::QmlProperty) {
+ qpn = static_cast<const QmlPropertyNode*>(*p);
+
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+
+ out() << "<td><p>";
+ //out() << "<tr><td>"; // old
+ out() << "<a name=\"" + refForNode(qpn) + "\"></a>";
+ if (!qpn->isWritable())
+ out() << "<span class=\"qmlreadonly\">read-only</span>";
+ if (qpgn->isDefault())
+ out() << "<span class=\"qmldefault\">default</span>";
+ generateQmlItem(qpn, relative, marker, false);
+ out() << "</td></tr>";
+ }
+ ++p;
+ }
+ out() << "</table>";
+ out() << "</div>";
+ }
+ else if (node->type() == Node::QmlSignal) {
+ const FunctionNode* qsn = static_cast<const FunctionNode*>(node);
+ out() << "<div class=\"qmlproto\">";
+ out() << "<table class=\"qmlname\">";
+ //out() << "<tr>";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+ out() << "<td><p>";
+ out() << "<a name=\"" + refForNode(qsn) + "\"></a>";
+ generateSynopsis(qsn,relative,marker,CodeMarker::Detailed,false);
+ //generateQmlItem(qsn,relative,marker,false);
+ out() << "</p></td></tr>";
+ out() << "</table>";
+ out() << "</div>";
+ }
+ else if (node->type() == Node::QmlMethod) {
+ const FunctionNode* qmn = static_cast<const FunctionNode*>(node);
+ out() << "<div class=\"qmlproto\">";
+ out() << "<table class=\"qmlname\">";
+ //out() << "<tr>";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
+ out() << "<td><p>";
+ out() << "<a name=\"" + refForNode(qmn) + "\"></a>";
+ generateSynopsis(qmn,relative,marker,CodeMarker::Detailed,false);
+ out() << "</p></td></tr>";
+ out() << "</table>";
+ out() << "</div>";
+ }
+ out() << "<div class=\"qmldoc\">";
+ generateStatus(node, marker);
+ generateBody(node, marker);
+ generateThreadSafeness(node, marker);
+ generateSince(node, marker);
+ generateAlsoList(node, marker);
+ out() << "</div>";
+ out() << "</div>";
+}
+
+/*!
+ Output the "Inherits" line for the QML element,
+ if there should be one.
+ */
+void DitaXmlGenerator::generateQmlInherits(const QmlClassNode* cn,
+ CodeMarker* marker)
+{
+ if (cn && !cn->links().empty()) {
+ if (cn->links().contains(Node::InheritsLink)) {
+ QPair<QString,QString> linkPair;
+ linkPair = cn->links()[Node::InheritsLink];
+ QStringList strList(linkPair.first);
+ const Node* n = myTree->findNode(strList,Node::Fake);
+ if (n && n->subType() == Node::QmlClass) {
+ const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
+ out() << "<p class=\"centerAlign\">";
+ Text text;
+ text << "[Inherits ";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, linkPair.second);
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << "]";
+ generateText(text, cn, marker);
+ out() << "</p>";
+ }
+ }
+ }
+}
+
+/*!
+ Output the "Inherit by" list for the QML element,
+ if it is inherited by any other elements.
+ */
+void DitaXmlGenerator::generateQmlInheritedBy(const QmlClassNode* cn,
+ CodeMarker* marker)
+{
+ if (cn) {
+ NodeList subs;
+ QmlClassNode::subclasses(cn->name(),subs);
+ if (!subs.isEmpty()) {
+ Text text;
+ text << Atom::ParaLeft << "Inherited by ";
+ appendSortedQmlNames(text,cn,subs,marker);
+ text << Atom::ParaRight;
+ generateText(text, cn, marker);
+ }
+ }
+}
+
+/*!
+ Output the "[Xxx instantiates the C++ class QmlGraphicsXxx]"
+ line for the QML element, if there should be one.
+
+ If there is no class node, or if the class node status
+ is set to Node::Internal, do nothing.
+ */
+void DitaXmlGenerator::generateQmlInstantiates(const QmlClassNode* qcn,
+ CodeMarker* marker)
+{
+ const ClassNode* cn = qcn->classNode();
+ if (cn && (cn->status() != Node::Internal)) {
+ out() << "<p class=\"centerAlign\">";
+ Text text;
+ text << "[";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, qcn->name());
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << " instantiates the C++ class ";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(cn));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, cn->name());
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << "]";
+ generateText(text, qcn, marker);
+ out() << "</p>";
+ }
+}
+
+/*!
+ Output the "[QmlGraphicsXxx is instantiated by QML element Xxx]"
+ line for the class, if there should be one.
+
+ If there is no QML element, or if the class node status
+ is set to Node::Internal, do nothing.
+ */
+void DitaXmlGenerator::generateInstantiatedBy(const ClassNode* cn,
+ CodeMarker* marker)
+{
+ if (cn && cn->status() != Node::Internal && !cn->qmlElement().isEmpty()) {
+ const Node* n = myTree->root()->findNode(cn->qmlElement(),Node::Fake);
+ if (n && n->subType() == Node::QmlClass) {
+ out() << "<p class=\"centerAlign\">";
+ Text text;
+ text << "[";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(cn));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, cn->name());
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << " is instantiated by QML element ";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(n));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, n->name());
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << "]";
+ generateText(text, cn, marker);
+ out() << "</p>";
+ }
+ }
+}
+
+/*!
+ Generate the <page> element for the given \a node using the \a writer.
+ Return true if a <page> element was written; otherwise return false.
+ */
+bool DitaXmlGenerator::generatePageElement(QXmlStreamWriter& writer,
+ const Node* node,
+ CodeMarker* marker) const
+{
+ if (node->pageType() == Node::NoPageType)
+ return false;
+ if (node->name().isEmpty())
+ return true;
+ if (node->access() == Node::Private)
+ return false;
+ if (!node->isInnerNode())
+ return false;
+
+ QString title;
+ QString rawTitle;
+ QString fullTitle;
+ const InnerNode* inner = static_cast<const InnerNode*>(node);
+
+ writer.writeStartElement("page");
+ QXmlStreamAttributes attributes;
+ QString t;
+ t.setNum(id++);
+ switch (node->type()) {
+ case Node::Fake:
+ {
+ const FakeNode* fake = static_cast<const FakeNode*>(node);
+ title = fake->fullTitle();
+ break;
+ }
+ case Node::Class:
+ {
+ title = node->name() + " Class Reference";
+ break;
+ }
+ case Node::Namespace:
+ {
+ rawTitle = marker->plainName(inner);
+ fullTitle = marker->plainFullName(inner);
+ title = rawTitle + " Namespace Reference";
+ break;
+ }
+ default:
+ title = node->name();
+ break;
+ }
+ writer.writeAttribute("id",t);
+ writer.writeStartElement("pageWords");
+ writer.writeCharacters(title);
+ if (!inner->pageKeywords().isEmpty()) {
+ const QStringList& w = inner->pageKeywords();
+ for (int i = 0; i < w.size(); ++i) {
+ writer.writeCharacters(" ");
+ writer.writeCharacters(w.at(i).toLocal8Bit().constData());
+ }
+ }
+ writer.writeEndElement();
+ writer.writeStartElement("pageTitle");
+ writer.writeCharacters(title);
+ writer.writeEndElement();
+ writer.writeStartElement("pageUrl");
+ writer.writeCharacters(PageGenerator::fileName(node));
+ writer.writeEndElement();
+ writer.writeStartElement("pageType");
+ switch (node->pageType()) {
+ case Node::ApiPage:
+ writer.writeCharacters("APIPage");
+ break;
+ case Node::ArticlePage:
+ writer.writeCharacters("Article");
+ break;
+ case Node::ExamplePage:
+ writer.writeCharacters("Example");
+ break;
+ default:
+ break;
+ }
+ writer.writeEndElement();
+ writer.writeEndElement();
+ return true;
+}
+
+/*!
+ Traverse the tree recursively and generate the <keyword>
+ elements.
+ */
+void DitaXmlGenerator::generatePageElements(QXmlStreamWriter& writer, const Node* node, CodeMarker* marker) const
+{
+ if (generatePageElement(writer, node, marker)) {
+
+ if (node->isInnerNode()) {
+ const InnerNode *inner = static_cast<const InnerNode *>(node);
+
+ // Recurse to write an element for this child node and all its children.
+ foreach (const Node *child, inner->childNodes())
+ generatePageElements(writer, child, marker);
+ }
+ }
+}
+
+/*!
+ Outputs the file containing the index used for searching the html docs.
+ */
+void DitaXmlGenerator::generatePageIndex(const QString& fileName, CodeMarker* marker) const
+{
+ QFile file(fileName);
+ if (!file.open(QFile::WriteOnly | QFile::Text))
+ return ;
+
+ QXmlStreamWriter writer(&file);
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument();
+ writer.writeStartElement("qtPageIndex");
+
+ generatePageElements(writer, myTree->root(), marker);
+
+ writer.writeEndElement(); // qtPageIndex
+ writer.writeEndDocument();
+ file.close();
+}
+
+#endif
+
+#if 0 // fossil removed for new doc format MWS 19/04/2010
+ out() << "<!DOCTYPE html\n"
+ " PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\n";
+ out() << QString("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"%1\" lang=\"%1\">\n").arg(naturalLanguage);
+
+ QString shortVersion;
+ if ((project != "Qtopia") && (project != "Qt Extended")) {
+ shortVersion = project + " " + shortVersion + ": ";
+ if (node && !node->doc().location().isEmpty())
+ out() << "<!-- " << node->doc().location().fileName() << " -->\n";
+
+ shortVersion = myTree->version();
+ if (shortVersion.count(QChar('.')) == 2)
+ shortVersion.truncate(shortVersion.lastIndexOf(QChar('.')));
+ if (!shortVersion.isEmpty()) {
+ if (project == "QSA")
+ shortVersion = "QSA " + shortVersion + ": ";
+ else
+ shortVersion = "Qt " + shortVersion + ": ";
+ }
+ }
+
+ out() << "<head>\n"
+ " <title>" << shortVersion << protectEnc(title) << "</title>\n";
+ out() << QString("<meta http-equiv=\"Content-type\" content=\"text/html; charset=%1\" />").arg(outputEncoding);
+
+ if (!style.isEmpty())
+ out() << " <style type=\"text/css\">" << style << "</style>\n";
+
+ const QMap<QString, QString> &metaMap = node->doc().metaTagMap();
+ if (!metaMap.isEmpty()) {
+ QMapIterator<QString, QString> i(metaMap);
+ while (i.hasNext()) {
+ i.next();
+ out() << " <meta name=\"" << protectEnc(i.key()) << "\" contents=\""
+ << protectEnc(i.value()) << "\" />\n";
+ }
+ }
+
+ navigationLinks.clear();
+
+ if (node && !node->links().empty()) {
+ QPair<QString,QString> linkPair;
+ QPair<QString,QString> anchorPair;
+ const Node *linkNode;
+
+ if (node->links().contains(Node::PreviousLink)) {
+ linkPair = node->links()[Node::PreviousLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+
+ out() << " <link rel=\"prev\" href=\""
+ << anchorPair.first << "\" />\n";
+
+ navigationLinks += "[Previous: <a href=\"" + anchorPair.first + "\">";
+ if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
+ navigationLinks += protectEnc(anchorPair.second);
+ else
+ navigationLinks += protectEnc(linkPair.second);
+ navigationLinks += "</a>]\n";
+ }
+ if (node->links().contains(Node::ContentsLink)) {
+ linkPair = node->links()[Node::ContentsLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+
+ out() << " <link rel=\"contents\" href=\""
+ << anchorPair.first << "\" />\n";
+
+ navigationLinks += "[<a href=\"" + anchorPair.first + "\">";
+ if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
+ navigationLinks += protectEnc(anchorPair.second);
+ else
+ navigationLinks += protectEnc(linkPair.second);
+ navigationLinks += "</a>]\n";
+ }
+ if (node->links().contains(Node::NextLink)) {
+ linkPair = node->links()[Node::NextLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+
+ out() << " <link rel=\"next\" href=\""
+ << anchorPair.first << "\" />\n";
+
+ navigationLinks += "[Next: <a href=\"" + anchorPair.first + "\">";
+ if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
+ navigationLinks += protectEnc(anchorPair.second);
+ else
+ navigationLinks += protectEnc(linkPair.second);
+ navigationLinks += "</a>]\n";
+ }
+ if (node->links().contains(Node::IndexLink)) {
+ linkPair = node->links()[Node::IndexLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+ out() << " <link rel=\"index\" href=\""
+ << anchorPair.first << "\" />\n";
+ }
+ if (node->links().contains(Node::StartLink)) {
+ linkPair = node->links()[Node::StartLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+ out() << " <link rel=\"start\" href=\""
+ << anchorPair.first << "\" />\n";
+ }
+ }
+
+ foreach (const QString &stylesheet, stylesheets) {
+ out() << " <link href=\"" << stylesheet << "\" rel=\"stylesheet\" "
+ << "type=\"text/css\" />\n";
+ }
+
+ foreach (const QString &customHeadElement, customHeadElements) {
+ out() << " " << customHeadElement << "\n";
+ }
+
+ out() << "</head>\n"
+ #endif
+
+ QT_END_NAMESPACE
diff --git a/tools/qdoc3/ditaxmlgenerator.h b/tools/qdoc3/ditaxmlgenerator.h
new file mode 100644
index 0000000..4de578d
--- /dev/null
+++ b/tools/qdoc3/ditaxmlgenerator.h
@@ -0,0 +1,358 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*
+ ditaxmlgenerator.h
+*/
+
+#ifndef DITAXMLGENERATOR_H
+#define DITAXMLGENERATOR_H
+
+#define QDOC_NAME_ALIGNMENT
+
+#include <qmap.h>
+#include <qregexp.h>
+#include <QXmlStreamWriter>
+
+#include "codemarker.h"
+#include "config.h"
+#include "dcfsection.h"
+#include "pagegenerator.h"
+
+QT_BEGIN_NAMESPACE
+
+#if 0
+struct NavigationBar
+{
+ SectionIterator prev;
+ SectionIterator current;
+ SectionIterator next;
+};
+#endif
+
+typedef QMultiMap<QString, Node*> NodeMultiMap;
+typedef QMap<QString, NodeMultiMap> NewSinceMaps;
+typedef QMap<Node*, NodeMultiMap> ParentMaps;
+typedef QMap<QString, const Node*> NodeMap;
+typedef QMap<QString, NodeMap> NewClassMaps;
+
+class HelpProjectWriter;
+
+class DitaXmlGenerator : public PageGenerator
+{
+ public:
+ enum SinceType {
+ Namespace,
+ Class,
+ MemberFunction,
+ NamespaceFunction,
+ GlobalFunction,
+ Macro,
+ Enum,
+ Typedef,
+ Property,
+ Variable,
+ QmlClass,
+ QmlProperty,
+ QmlSignal,
+ QmlMethod,
+ LastSinceType
+ };
+
+ public:
+ DitaXmlGenerator();
+ ~DitaXmlGenerator();
+
+ virtual void initializeGenerator(const Config& config);
+ virtual void terminateGenerator();
+ virtual QString format();
+ virtual void generateTree(const Tree *tree, CodeMarker *marker);
+
+ QString protectEnc(const QString &string);
+ static QString protect(const QString &string, const QString &encoding = "ISO-8859-1");
+ static QString cleanRef(const QString& ref);
+ static QString sinceTitle(int i) { return sinceTitles[i]; }
+
+ protected:
+ virtual void startText(const Node *relative, CodeMarker *marker);
+ virtual int generateAtom(const Atom *atom,
+ const Node *relative,
+ CodeMarker *marker);
+ virtual void generateClassLikeNode(const InnerNode *inner, CodeMarker *marker);
+ virtual void generateFakeNode(const FakeNode *fake, CodeMarker *marker);
+ virtual QString fileExtension(const Node *node) const;
+ virtual QString refForNode(const Node *node);
+ virtual QString linkForNode(const Node *node, const Node *relative);
+ virtual QString refForAtom(Atom *atom, const Node *node);
+
+ private:
+ enum SubTitleSize { SmallSubTitle, LargeSubTitle };
+
+ const QPair<QString,QString> anchorForNode(const Node *node);
+ const Node *findNodeForTarget(const QString &target,
+ const Node *relative,
+ CodeMarker *marker,
+ const Atom *atom = 0);
+ void generateBreadCrumbs(const QString& title,
+ const Node *node,
+ CodeMarker *marker);
+ void generateHeader(const QString& title,
+ const Node *node = 0,
+ CodeMarker *marker = 0);
+ void generateTitle(const QString& title,
+ const Text &subTitle,
+ SubTitleSize subTitleSize,
+ const Node *relative,
+ CodeMarker *marker);
+ void generateFooter(const Node *node = 0);
+ void generateBrief(const Node *node,
+ CodeMarker *marker,
+ const Node *relative = 0);
+ void generateIncludes(const InnerNode *inner, CodeMarker *marker);
+#if 0
+ void generateNavigationBar(const NavigationBar& bar,
+ const Node *node,
+ CodeMarker *marker);
+#endif
+ void generateTableOfContents(const Node *node,
+ CodeMarker *marker,
+ Doc::SectioningUnit sectioningUnit,
+ int numColumns,
+ const Node *relative = 0);
+ void generateTableOfContents(const Node *node,
+ CodeMarker *marker,
+ QList<Section>* sections = 0);
+ QString generateListOfAllMemberFile(const InnerNode *inner, CodeMarker *marker);
+ QString generateLowStatusMemberFile(const InnerNode *inner,
+ CodeMarker *marker,
+ CodeMarker::Status status);
+ void generateClassHierarchy(const Node *relative,
+ CodeMarker *marker,
+ const NodeMap &classMap);
+ void generateAnnotatedList(const Node *relative,
+ CodeMarker *marker,
+ const NodeMap &nodeMap);
+ void generateCompactList(const Node *relative,
+ CodeMarker *marker,
+ const NodeMap &classMap,
+ bool includeAlphabet,
+ QString commonPrefix = QString());
+ void generateFunctionIndex(const Node *relative, CodeMarker *marker);
+ void generateLegaleseList(const Node *relative, CodeMarker *marker);
+ void generateOverviewList(const Node *relative, CodeMarker *marker);
+ void generateSectionList(const Section& section,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style);
+#ifdef QDOC_QML
+ void generateQmlSummary(const Section& section,
+ const Node *relative,
+ CodeMarker *marker);
+ void generateQmlItem(const Node *node,
+ const Node *relative,
+ CodeMarker *marker,
+ bool summary);
+ void generateDetailedQmlMember(const Node *node,
+ const InnerNode *relative,
+ CodeMarker *marker);
+ void generateQmlInherits(const QmlClassNode* cn, CodeMarker* marker);
+ void generateQmlInheritedBy(const QmlClassNode* cn, CodeMarker* marker);
+ void generateQmlInstantiates(const QmlClassNode* qcn, CodeMarker* marker);
+ void generateInstantiatedBy(const ClassNode* cn, CodeMarker* marker);
+#endif
+#ifdef QDOC_NAME_ALIGNMENT
+ void generateSection(const NodeList& nl,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style);
+ void generateSynopsis(const Node *node,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style,
+ bool nameAlignment = false);
+ void generateSectionInheritedList(const Section& section,
+ const Node *relative,
+ CodeMarker *marker,
+ bool nameAlignment = false);
+ QString highlightedCode(const QString& markedCode,
+ CodeMarker *marker,
+ const Node *relative,
+ CodeMarker::SynopsisStyle style = CodeMarker::Accessors,
+ bool nameAlignment = false);
+#else
+ void generateSynopsis(const Node *node,
+ const Node *relative,
+ CodeMarker *marker,
+ CodeMarker::SynopsisStyle style);
+ void generateSectionInheritedList(const Section& section,
+ const Node *relative,
+ CodeMarker *marker);
+ QString highlightedCode(const QString& markedCode,
+ CodeMarker *marker,
+ const Node *relative);
+#endif
+ void generateFullName(const Node *apparentNode,
+ const Node *relative,
+ CodeMarker *marker,
+ const Node *actualNode = 0);
+ void generateDetailedMember(const Node *node,
+ const InnerNode *relative,
+ CodeMarker *marker);
+ void generateLink(const Atom *atom,
+ const Node *relative,
+ CodeMarker *marker);
+ void generateStatus(const Node *node, CodeMarker *marker);
+
+ QString registerRef(const QString& ref);
+ QString fileBase(const Node *node);
+#if 0
+ QString fileBase(const Node *node, const SectionIterator& section);
+#endif
+ QString fileName(const Node *node);
+ void findAllClasses(const InnerNode *node);
+ void findAllFunctions(const InnerNode *node);
+ void findAllLegaleseTexts(const InnerNode *node);
+ void findAllNamespaces(const InnerNode *node);
+#ifdef ZZZ_QDOC_QML
+ void findAllQmlClasses(const InnerNode *node);
+#endif
+ void findAllSince(const InnerNode *node);
+ static int hOffset(const Node *node);
+ static bool isThreeColumnEnumValueTable(const Atom *atom);
+ virtual QString getLink(const Atom *atom,
+ const Node *relative,
+ CodeMarker *marker,
+ const Node** node);
+ virtual void generateDcf(const QString &fileBase,
+ const QString &startPage,
+ const QString &title, DcfSection &dcfRoot);
+ virtual void generateIndex(const QString &fileBase,
+ const QString &url,
+ const QString &title);
+#ifdef GENERATE_MAC_REFS
+ void generateMacRef(const Node *node, CodeMarker *marker);
+#endif
+ void beginLink(const QString &link,
+ const Node *node,
+ const Node *relative,
+ CodeMarker *marker);
+ void endLink();
+ bool generatePageElement(QXmlStreamWriter& writer,
+ const Node* node,
+ CodeMarker* marker) const;
+ void generatePageElements(QXmlStreamWriter& writer,
+ const Node* node,
+ CodeMarker* marker) const;
+ void generatePageIndex(const QString& fileName,
+ CodeMarker* marker) const;
+
+#if 0
+ NavigationBar currentNavigationBar;
+#endif
+ QMap<QString, QString> refMap;
+ int codeIndent;
+ DcfSection dcfClassesRoot;
+ DcfSection dcfOverviewsRoot;
+ DcfSection dcfExamplesRoot;
+ DcfSection dcfDesignerRoot;
+ DcfSection dcfLinguistRoot;
+ DcfSection dcfAssistantRoot;
+ DcfSection dcfQmakeRoot;
+ HelpProjectWriter *helpProjectWriter;
+ bool inLink;
+ bool inObsoleteLink;
+ bool inContents;
+ bool inSectionHeading;
+ bool inTableHeader;
+ int numTableRows;
+ bool threeColumnEnumValueTable;
+ bool offlineDocs;
+ QString link;
+ QStringList sectionNumber;
+ QRegExp funcLeftParen;
+ QString style;
+ QString postHeader;
+ QString postPostHeader;
+ QString footer;
+ QString address;
+ bool pleaseGenerateMacRef;
+ QString project;
+ QString projectDescription;
+ QString projectUrl;
+ QString navigationLinks;
+ QStringList stylesheets;
+ QStringList customHeadElements;
+ const Tree *myTree;
+ bool slow;
+ bool obsoleteLinks;
+ QMap<QString, NodeMap > moduleClassMap;
+ QMap<QString, NodeMap > moduleNamespaceMap;
+ NodeMap nonCompatClasses;
+ NodeMap mainClasses;
+ NodeMap compatClasses;
+ NodeMap obsoleteClasses;
+ NodeMap namespaceIndex;
+ NodeMap serviceClasses;
+#ifdef QDOC_QML
+ NodeMap qmlClasses;
+#endif
+ QMap<QString, NodeMap > funcIndex;
+ QMap<Text, const Node *> legaleseTexts;
+ NewSinceMaps newSinceMaps;
+ static QString sinceTitles[];
+ NewClassMaps newClassMaps;
+ NewClassMaps newQmlClassMaps;
+ static int id;
+};
+
+#define DITAXMLGENERATOR_ADDRESS "address"
+#define DITAXMLGENERATOR_FOOTER "footer"
+#define DITAXMLGENERATOR_GENERATEMACREFS "generatemacrefs" // ### document me
+#define DITAXMLGENERATOR_POSTHEADER "postheader"
+#define DITAXMLGENERATOR_POSTPOSTHEADER "postpostheader"
+#define DITAXMLGENERATOR_STYLE "style"
+#define DITAXMLGENERATOR_STYLESHEETS "stylesheets"
+#define DITAXMLGENERATOR_CUSTOMHEADELEMENTS "customheadelements"
+
+QT_END_NAMESPACE
+
+#endif
+
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index b103981..f6b8c06 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -519,14 +519,14 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << formattingRightMap()[ATOM_FORMATTING_TELETYPE];
break;
case Atom::Code:
- out() << "<pre class=\"highlightedCode\">"
+ out() << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
break;
#ifdef QDOC_QML
case Atom::Qml:
- out() << "<pre class=\"highlightedCode\">"
+ out() << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
@@ -534,7 +534,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
#endif
case Atom::CodeNew:
out() << "<p>you can rewrite it as</p>\n"
- << "<pre class=\"highlightedCode\">"
+ << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
@@ -543,7 +543,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<p>For example, if you have code like</p>\n";
// fallthrough
case Atom::CodeBad:
- out() << "<pre class=\"highlightedCode\">"
+ out() << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(protectEnc(plainCode(indent(codeIndent,atom->string()))))
<< "</pre>\n";
break;
@@ -1711,62 +1711,49 @@ void HtmlGenerator::generateBreadCrumbs(const QString& title,
if (node->type() == Node::Class) {
const ClassNode* cn = static_cast<const ClassNode*>(node);
QString name = node->moduleName();
- out() << " <li><a href=\"modules.html\">All Modules</a></li>";
+ out() << " <li><a href=\"modules.html\">Modules</a></li>";
if (!name.isEmpty()) {
out() << " <li>";
breadcrumb << Atom(Atom::AutoLink,name);
generateText(breadcrumb, node, marker);
out() << "</li>\n";
}
- breadcrumb.clear();
- if (!cn->name().isEmpty()) {
- out() << " <li>";
- breadcrumb << Atom(Atom::AutoLink,cn->name());
- generateText(breadcrumb, 0, marker);
- out() << "</li>\n";
- }
+ if (!cn->name().isEmpty())
+ out() << " <li>" << cn->name() << "</li>\n";
}
else if (node->type() == Node::Fake) {
const FakeNode* fn = static_cast<const FakeNode*>(node);
if (node->subType() == Node::Module) {
- out() << " <li><a href=\"modules.html\">All Modules</a></li>";
+ out() << " <li><a href=\"modules.html\">Modules</a></li>";
QString name = node->name();
- if (!name.isEmpty()) {
- out() << " <li>";
- breadcrumb << Atom(Atom::AutoLink,name);
- generateText(breadcrumb, 0, marker);
- out() << "</li>\n";
- }
+ if (!name.isEmpty())
+ out() << " <li>" << name << "</li>\n";
}
else if (node->subType() == Node::Group) {
if (fn->name() == QString("modules"))
- out() << " <li><a href=\"modules.html\">All Modules</a></li>";
+ out() << " <li>Modules</li>";
else {
- out() << " <li><a href=\"" << fn->name() << "\">" << title
- << "</a></li>";
+ out() << " <li>" << title << "</li>";
}
}
else if (node->subType() == Node::Page) {
if (fn->name() == QString("examples.html")) {
- out() << " <li><a href=\"all-examples.html\">Examples</a></li>";
+ out() << " <li>Examples</li>";
}
else if (fn->name().startsWith("examples-")) {
out() << " <li><a href=\"all-examples.html\">Examples</a></li>";
- out() << " <li><a href=\"" << fn->name() << "\">" << title
- << "</a></li>";
+ out() << " <li>" << title << "</li>";
}
else if (fn->name() == QString("namespaces.html")) {
- out() << " <li><a href=\"namespaces.html\">All Namespaces</a></li>";
+ out() << " <li>Namespaces</li>";
}
else {
- out() << " <li><a href=\"" << fn->name() << "\">" << title
- << "</a></li>";
+ out() << " <li>" << title << "</li>";
}
}
else if (node->subType() == Node::QmlClass) {
out() << " <li><a href=\"qdeclarativeelements.html\">QML Elements</a></li>";
- out() << " <li><a href=\"" << fn->name() << "\">" << title
- << "</a></li>";
+ out() << " <li>" << title << "</li>";
}
else if (node->subType() == Node::Example) {
out() << " <li><a href=\"all-examples.html\">Examples</a></li>";
@@ -1775,16 +1762,12 @@ void HtmlGenerator::generateBreadCrumbs(const QString& title,
QString t = CodeParser::titleFromName(name);
out() << " <li><a href=\"" << name << "\">"
<< t << "</a></li>";
- out() << " <li><a href=\"" << sl.at(0)
- << "-" << sl.at(sl.size()-1) << ".html\">"
- << title << "</a></li>";
+ out() << " <li>" << title << "</li>";
}
}
else if (node->type() == Node::Namespace) {
- const NamespaceNode* nsn = static_cast<const NamespaceNode*>(node);
- out() << " <li><a href=\"namespaces.html\">All Namespaces</a></li>";
- out() << " <li><a href=\"" << fileName(nsn) << "\">" << title
- << "</a></li>";
+ out() << " <li><a href=\"namespaces.html\">Namespaces</a></li>";
+ out() << " <li>" << title << "</li>";
}
}
@@ -1814,31 +1797,51 @@ void HtmlGenerator::generateHeader(const QString& title,
out() << " <title>" << shortVersion << protectEnc(title) << "</title>\n";
- out() << " <!--[if IE]>";
- out() << "<meta name=\"MSSmartTagsPreventParsing\" content=\"true\">";
- out() << "<meta http-equiv=\"imagetoolbar\" content=\"no\">";
- out() << "<![endif]-->";
- out() << "<!--[if lt IE 7]>";
- out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie6.css\">";
- out() << "<![endif]-->";
- out() << "<!--[if IE 7]>";
- out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie7.css\">";
- out() << "<![endif]-->";
- out() << "<!--[if IE 8]>";
- out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie8.css\">";
- out() << "<![endif]-->";
-
-
//out() << " <title>Qt Reference Documentation</title>";
- out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />\n";
- out() << " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n";
- out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
- out() << "</head>\n";
if (offlineDocs)
- out() << "<body class=\"offline\" onload=\"CheckEmptyAndLoadList();\">\n";
+ {
+ out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/OfflineStyle.css\" />";
+ out() << "</head>\n";
+ out() << "<body class=\"offline narrow\" >\n"; // narrow mainly for Creator
+ }
else
- out() << "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n";
+ {
+ out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\"\n />";
+ out() << " <!--[if IE]>\n";
+ out() << "<meta name=\"MSSmartTagsPreventParsing\" content=\"true\">\n";
+ out() << "<meta http-equiv=\"imagetoolbar\" content=\"no\">\n";
+ out() << "<![endif]-->\n";
+ out() << "<!--[if lt IE 7]>\n";
+ out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie6.css\">\n";
+ out() << "<![endif]-->\n";
+ out() << "<!--[if IE 7]>\n";
+ out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie7.css\">\n";
+ out() << "<![endif]-->\n";
+ out() << "<!--[if IE 8]>\n";
+ out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie8.css\">\n";
+ out() << "<![endif]-->\n";
+ // jquery functions
+ out() << " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n";
+ out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
+ // menus and small docs js and css
+ out() << " <script src=\"./scripts/superfish.js\" type=\"text/javascript\"></script>\n";
+ out() << " <script src=\"./scripts/narrow.js\" type=\"text/javascript\"></script>\n";
+ out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/superfish.css\" />";
+ out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/narrow.css\" />";
+
+ // syntax highlighter js and css
+ // out() << " <link type=\"text/css\" rel=\"stylesheet\" href=\"style/shCore.css\"/>\n";
+ // out() << " <link type=\"text/css\" rel=\"stylesheet\" href=\"style/shThemeDefault.css\"/>\n";
+ // out() << " <script type=\"text/javascript\" src=\"scripts/shCore.js\"></script>\n";
+ // out() << " <script type=\"text/javascript\" src=\"scripts/shBrushCpp.js\"></script>\n";
+ // out() << " <script type=\"text/javascript\">\n";
+ // out() << " SyntaxHighlighter.all();\n";
+ // out() << " </script>\n";
+
+ out() << "</head>\n";
+ out() << "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n";
+ }
#ifdef GENERATE_MAC_REFS
if (mainPage)
@@ -1880,8 +1883,16 @@ void HtmlGenerator::generateFooter(const Node *node)
out() << QString(footer).replace("\\" + COMMAND_VERSION, myTree->version())
<< QString(address).replace("\\" + COMMAND_VERSION, myTree->version());
- out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
+
+ if (offlineDocs)
+ {
out() << "</body>\n";
+ }
+ else
+ {
+ out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
+ out() << "</body>\n";
+ }
out() << "</html>\n";
}
@@ -1903,7 +1914,7 @@ void HtmlGenerator::generateBrief(const Node *node, CodeMarker *marker,
void HtmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *marker)
{
if (!inner->includes().isEmpty()) {
- out() << "<pre class=\"highlightedCode\">"
+ out() << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,
marker->markedUpIncludes(inner->includes())),
marker,inner))
@@ -2127,6 +2138,8 @@ void HtmlGenerator::generateNavigationBar(const NavigationBar& bar,
out() << "</a>]\n";
#endif
}
+ if (fake->name() != QString("index.html"))
+ {
if (bar.current.begin() != 0) {
out() << "[<a href=\"" << "home"
<< ".html\">Home</a>]\n";
@@ -2138,6 +2151,7 @@ void HtmlGenerator::generateNavigationBar(const NavigationBar& bar,
out() << "</a>]\n";
}
out() << "</p>\n";
+ }
}
}
#endif
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 4ba3a32..3c7e9dc 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -624,7 +624,7 @@ void InnerNode::removeChild(Node *child)
QMap<QString, Node *>::Iterator prim =
primaryFunctionMap.find(child->name());
NodeList& secs = secondaryFunctionMap[child->name()];
- if (*prim == child) {
+ if (prim != primaryFunctionMap.end() && *prim == child) {
if (secs.isEmpty()) {
primaryFunctionMap.remove(child->name());
}
@@ -636,12 +636,12 @@ void InnerNode::removeChild(Node *child)
secs.removeAll(child);
}
QMap<QString, Node *>::Iterator ent = childMap.find( child->name() );
- if ( *ent == child )
+ if (ent != childMap.end() && *ent == child)
childMap.erase( ent );
}
else {
QMap<QString, Node *>::Iterator ent = childMap.find(child->name());
- if (*ent == child)
+ if (ent != childMap.end() && *ent == child)
childMap.erase(ent);
}
}
diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp
index f0f14fe..13c83a8 100644
--- a/tools/qdoc3/pagegenerator.cpp
+++ b/tools/qdoc3/pagegenerator.cpp
@@ -45,7 +45,7 @@
#include <qfile.h>
#include <qfileinfo.h>
-
+#include <qdebug.h>
#include "pagegenerator.h"
#include "tree.h"
@@ -68,6 +68,110 @@ PageGenerator::~PageGenerator()
endSubPage();
}
+static QRegExp linkTag("(<@link node=\"([^\"]+)\">).*(</@link>)");
+static QRegExp funcTag("(<@func target=\"([^\"]*)\">)(.*)(</@func>)");
+static QRegExp typeTag("(<@(type|headerfile|func)(?: +[^>]*)?>)(.*)(</@\\2>)");
+static QRegExp spanTag("</@(?:comment|preprocessor|string|char)>");
+static QRegExp unknownTag("</?@[^>]*>");
+
+bool PageGenerator::parseArg(const QString& src,
+ const QString& tag,
+ int* pos,
+ int n,
+ QStringRef* contents,
+ QStringRef* par1,
+ bool debug)
+{
+#define SKIP_CHAR(c) \
+ if (debug) \
+ qDebug() << "looking for " << c << " at " << QString(src.data() + i, n - i); \
+ if (i >= n || src[i] != c) { \
+ if (debug) \
+ qDebug() << " char '" << c << "' not found"; \
+ return false; \
+ } \
+ ++i;
+
+
+#define SKIP_SPACE \
+ while (i < n && src[i] == ' ') \
+ ++i;
+
+ int i = *pos;
+ int j = i;
+
+ // assume "<@" has been parsed outside
+ //SKIP_CHAR('<');
+ //SKIP_CHAR('@');
+
+ if (tag != QStringRef(&src, i, tag.length())) {
+ if (0 && debug)
+ qDebug() << "tag " << tag << " not found at " << i;
+ return false;
+ }
+
+ if (debug)
+ qDebug() << "haystack:" << src << "needle:" << tag << "i:" <<i;
+
+ // skip tag
+ i += tag.length();
+
+ // parse stuff like: linkTag("(<@link node=\"([^\"]+)\">).*(</@link>)");
+ if (par1) {
+ SKIP_SPACE;
+ // read parameter name
+ j = i;
+ while (i < n && src[i].isLetter())
+ ++i;
+ if (src[i] == '=') {
+ if (debug)
+ qDebug() << "read parameter" << QString(src.data() + j, i - j);
+ SKIP_CHAR('=');
+ SKIP_CHAR('"');
+ // skip parameter name
+ j = i;
+ while (i < n && src[i] != '"')
+ ++i;
+ *par1 = QStringRef(&src, j, i - j);
+ SKIP_CHAR('"');
+ SKIP_SPACE;
+ } else {
+ if (debug)
+ qDebug() << "no optional parameter found";
+ }
+ }
+ SKIP_SPACE;
+ SKIP_CHAR('>');
+
+ // find contents up to closing "</@tag>
+ j = i;
+ for (; true; ++i) {
+ if (i + 4 + tag.length() > n)
+ return false;
+ if (src[i] != '<')
+ continue;
+ if (src[i + 1] != '/')
+ continue;
+ if (src[i + 2] != '@')
+ continue;
+ if (tag != QStringRef(&src, i + 3, tag.length()))
+ continue;
+ if (src[i + 3 + tag.length()] != '>')
+ continue;
+ break;
+ }
+
+ *contents = QStringRef(&src, j, i - j);
+
+ i += tag.length() + 4;
+
+ *pos = i;
+ if (debug)
+ qDebug() << " tag " << tag << " found: pos now: " << i;
+ return true;
+#undef SKIP_CHAR
+}
+
/*!
This function is recursive.
*/
diff --git a/tools/qdoc3/pagegenerator.h b/tools/qdoc3/pagegenerator.h
index 7ab7e5e..1aa24a1 100644
--- a/tools/qdoc3/pagegenerator.h
+++ b/tools/qdoc3/pagegenerator.h
@@ -80,10 +80,17 @@ class PageGenerator : public Generator
QString naturalLanguage;
QString outputEncoding;
- QTextCodec *outputCodec;
+ QTextCodec* outputCodec;
+ bool parseArg(const QString& src,
+ const QString& tag,
+ int* pos,
+ int n,
+ QStringRef* contents,
+ QStringRef* par1 = 0,
+ bool debug = false);
private:
- QStack<QTextStream *> outStreamStack;
+ QStack<QTextStream*> outStreamStack;
};
QT_END_NAMESPACE
diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro
index 81ff93a..5bedc29 100644
--- a/tools/qdoc3/qdoc3.pro
+++ b/tools/qdoc3/qdoc3.pro
@@ -37,6 +37,7 @@ HEADERS += apigenerator.h \
cppcodeparser.h \
cpptoqsconverter.h \
dcfsection.h \
+ ditaxmlgenerator.h \
doc.h \
editdistance.h \
generator.h \
@@ -81,6 +82,7 @@ SOURCES += apigenerator.cpp \
cppcodeparser.cpp \
cpptoqsconverter.cpp \
dcfsection.cpp \
+ ditaxmlgenerator.cpp \
doc.cpp \
editdistance.cpp \
generator.cpp \
diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf
index 167bb19..4b52992 100644
--- a/tools/qdoc3/test/assistant.qdocconf
+++ b/tools/qdoc3/test/assistant.qdocconf
@@ -30,6 +30,7 @@ qhp.Assistant.extraFiles = images/bg_l.png \
images/page.png \
images/page_bg.png \
images/sprites-combined.png \
+ images/arrow-down.png \
images/spinner.gif \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
@@ -37,6 +38,7 @@ qhp.Assistant.extraFiles = images/bg_l.png \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
style/style_ie8.css \
diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf
index 48e3ea1..b1f37dc 100644
--- a/tools/qdoc3/test/designer.qdocconf
+++ b/tools/qdoc3/test/designer.qdocconf
@@ -30,6 +30,7 @@ qhp.Designer.extraFiles = images/bg_l.png \
images/page.png \
images/page_bg.png \
images/sprites-combined.png \
+ images/arrow-down.png \
images/spinner.gif \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
@@ -37,6 +38,7 @@ qhp.Designer.extraFiles = images/bg_l.png \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
style/style_ie8.css \
diff --git a/tools/qdoc3/test/images/bg_l.png b/tools/qdoc3/test/images/bg_l.png
new file mode 100644
index 0000000..90b1da1
--- /dev/null
+++ b/tools/qdoc3/test/images/bg_l.png
Binary files differ
diff --git a/tools/qdoc3/test/images/bg_l_blank.png b/tools/qdoc3/test/images/bg_l_blank.png
new file mode 100644
index 0000000..5a9673d
--- /dev/null
+++ b/tools/qdoc3/test/images/bg_l_blank.png
Binary files differ
diff --git a/tools/qdoc3/test/images/bg_r.png b/tools/qdoc3/test/images/bg_r.png
new file mode 100644
index 0000000..f0fb121
--- /dev/null
+++ b/tools/qdoc3/test/images/bg_r.png
Binary files differ
diff --git a/tools/qdoc3/test/images/box_bg.png b/tools/qdoc3/test/images/box_bg.png
new file mode 100644
index 0000000..3322f92
--- /dev/null
+++ b/tools/qdoc3/test/images/box_bg.png
Binary files differ
diff --git a/tools/qdoc3/test/images/breadcrumb.png b/tools/qdoc3/test/images/breadcrumb.png
new file mode 100644
index 0000000..0ded551
--- /dev/null
+++ b/tools/qdoc3/test/images/breadcrumb.png
Binary files differ
diff --git a/tools/qdoc3/test/images/bullet_dn.png b/tools/qdoc3/test/images/bullet_dn.png
new file mode 100644
index 0000000..f776247
--- /dev/null
+++ b/tools/qdoc3/test/images/bullet_dn.png
Binary files differ
diff --git a/tools/qdoc3/test/images/bullet_gt.png b/tools/qdoc3/test/images/bullet_gt.png
new file mode 100644
index 0000000..7561b4e
--- /dev/null
+++ b/tools/qdoc3/test/images/bullet_gt.png
Binary files differ
diff --git a/tools/qdoc3/test/images/bullet_sq.png b/tools/qdoc3/test/images/bullet_sq.png
new file mode 100644
index 0000000..a84845e
--- /dev/null
+++ b/tools/qdoc3/test/images/bullet_sq.png
Binary files differ
diff --git a/tools/qdoc3/test/images/bullet_up.png b/tools/qdoc3/test/images/bullet_up.png
new file mode 100644
index 0000000..285e741
--- /dev/null
+++ b/tools/qdoc3/test/images/bullet_up.png
Binary files differ
diff --git a/tools/qdoc3/test/images/feedbackground.png b/tools/qdoc3/test/images/feedbackground.png
new file mode 100644
index 0000000..3a38d99
--- /dev/null
+++ b/tools/qdoc3/test/images/feedbackground.png
Binary files differ
diff --git a/tools/qdoc3/test/images/horBar.png b/tools/qdoc3/test/images/horBar.png
new file mode 100644
index 0000000..100fe91
--- /dev/null
+++ b/tools/qdoc3/test/images/horBar.png
Binary files differ
diff --git a/tools/qdoc3/test/images/page.png b/tools/qdoc3/test/images/page.png
new file mode 100644
index 0000000..1db151b
--- /dev/null
+++ b/tools/qdoc3/test/images/page.png
Binary files differ
diff --git a/tools/qdoc3/test/images/page_bg.png b/tools/qdoc3/test/images/page_bg.png
new file mode 100644
index 0000000..9b3bd99
--- /dev/null
+++ b/tools/qdoc3/test/images/page_bg.png
Binary files differ
diff --git a/tools/qdoc3/test/images/sprites-combined.png b/tools/qdoc3/test/images/sprites-combined.png
new file mode 100644
index 0000000..3a48b21
--- /dev/null
+++ b/tools/qdoc3/test/images/sprites-combined.png
Binary files differ
diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf
index 8974bd7..26fb55c 100644
--- a/tools/qdoc3/test/linguist.qdocconf
+++ b/tools/qdoc3/test/linguist.qdocconf
@@ -30,13 +30,15 @@ qhp.Linguist.extraFiles = images/bg_l.png \
images/page.png \
images/page_bg.png \
images/sprites-combined.png \
- images/spinner.gif \
+ images/arrow-down.png \
+s images/spinner.gif \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
images/coloreditorfactoryimage.png \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
style/style_ie8.css \
diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf
index 0f2e381..74fd802 100644
--- a/tools/qdoc3/test/qdeclarative.qdocconf
+++ b/tools/qdoc3/test/qdeclarative.qdocconf
@@ -41,6 +41,7 @@ qhp.Qml.extraFiles = images/bg_l.png \
images/page.png \
images/page_bg.png \
images/sprites-combined.png \
+ images/arrow-down.png \
images/spinner.png \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
@@ -48,6 +49,7 @@ qhp.Qml.extraFiles = images/bg_l.png \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
style/style_ie8.css \
diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf
index ea58059..f069129 100644
--- a/tools/qdoc3/test/qmake.qdocconf
+++ b/tools/qdoc3/test/qmake.qdocconf
@@ -30,6 +30,7 @@ qhp.qmake.extraFiles = images/bg_l.png \
images/page.png \
images/page_bg.png \
images/sprites-combined.png \
+ images/arrow-down.png \
images/spinner.gif \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
@@ -37,6 +38,7 @@ qhp.qmake.extraFiles = images/bg_l.png \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
style/style_ie8.css \
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index bd363a6..00704ea 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -36,6 +36,7 @@ qhp.Qt.extraFiles = index.html \
images/page.png \
images/page_bg.png \
images/sprites-combined.png \
+ images/arrow-down.png \
images/spinner.gif \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
@@ -43,6 +44,7 @@ qhp.Qt.extraFiles = index.html \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
style/style_ie8.css \
diff --git a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
index caf5f73..712e23f 100644
--- a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
@@ -44,6 +44,7 @@ qhp.Qt.extraFiles = index.html \
images/page.png \
images/page_bg.png \
images/sprites-combined.png \
+ images/arrow-down.png \
images/spinner.gif \
images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
diff --git a/tools/qdoc3/test/qt-defines.qdocconf b/tools/qdoc3/test/qt-defines.qdocconf
index 3e71d07..9e41d93 100644
--- a/tools/qdoc3/test/qt-defines.qdocconf
+++ b/tools/qdoc3/test/qt-defines.qdocconf
@@ -20,34 +20,49 @@ codeindent = 1
# See also qhp.Qt.extraFiles
extraimages.HTML = qt-logo \
trolltech-logo \
- bg_l.png \
- bg_l_blank.png \
- bg_r.png \
- box_bg.png \
- breadcrumb.png \
- bullet_gt.png \
- bullet_dn.png \
- bullet_sq.png \
- bullet_up.png \
- feedbackground.png \
- horBar.png \
- page.png \
- page_bg.png \
- sprites-combined.png \
- spinner.gif \
- taskmenuextension-example.png \
- coloreditorfactoryimage.png \
- dynamiclayouts-example.png \
- stylesheet-coffee-plastique.png
+ bg_l.png \
+ bg_l_blank.png \
+ bg_ll_blank.png \
+ bg_ul_blank.png \
+ header_bg.png \
+ bg_r.png \
+ box_bg.png \
+ breadcrumb.png \
+ bullet_gt.png \
+ bullet_dn.png \
+ bullet_sq.png \
+ bullet_up.png \
+ arrow_down.png \
+ feedbackground.png \
+ horBar.png \
+ page.png \
+ page_bg.png \
+ sprites-combined.png \
+ spinner.gif \
+ stylesheet-coffee-plastique.png \
+ taskmenuextension-example.png \
+ coloreditorfactoryimage.png \
+ dynamiclayouts-example.png \
# This stuff is used by the new doc format.
scriptdirs = $QT_SOURCE_TREE/doc/src/template/scripts
styledirs = $QT_SOURCE_TREE/doc/src/template/style
scripts.HTML = functions.js \
+ shBrushCpp.js \
+ shCore.js \
+ shLegacy.js \
+ narrow.js \
+ superfish.js \
jquery.js
styles.HTML = style.css \
+ shCore.css \
+ shThemeDefault.css \
+ narrow.css \
+ superfish.css \
+ superfish_skin.css \
+ OfflineStyle.css \
style_ie6.css \
style_ie7.css \
style_ie8.css
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index b72a1eb..60f5fb1 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -1,12 +1,19 @@
-HTML.stylesheets = style/style_ie6.css \
+HTML.stylesheets = style/style.css \
+ style/OfflineStyle.css \
style/style_ie7.css \
style/style_ie8.css \
- style/style.css
+ style/style_ie6.css
HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
+ " <div class=\"content\"> \n" \
" <div id=\"nav-logo\">\n" \
" <a href=\"index.html\">Home</a></div>\n" \
" <a href=\"index.html\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\n" \
+ " <div id=\"narrowsearch\"><form onsubmit=\"return false;\" action=\"\" id=\"qtdocsearch\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" value=\"\" id=\"pageType\" name=\"searchstring\">\n" \
+ " </fieldset>\n" \
+ " </form></div>\n" \
" <div id=\"nav-topright\">\n" \
" <ul>\n" \
" <li class=\"nav-topright-home\"><a href=\"http://qt.nokia.com/\">Qt HOME</a></li>\n" \
@@ -21,9 +28,39 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <div id=\"shortCut\">\n" \
" <ul>\n" \
" <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt 4.7</a></span></li>\n" \
- " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL Qt VERSIONS" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL VERSIONS" \
" </a></li>\n" \
" </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu sf-js-enabled sf-shadow\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul id=\"topmenuLook\"> \n" \
+ " <li><a href=\"classes.html\">Class index</a></li> \n" \
+ " <li><a href=\"functions.html\">Function index</a></li> \n" \
+ " <li><a href=\"modules.html\">Modules</a></li> \n" \
+ " <li><a href=\"namespaces.html\">Namespaces</a></li> \n" \
+ " <li><a href=\"qtglobal.html\">Global stuff</a></li> \n" \
+ " <li><a href=\"qdeclarativeelements.html\">QML elements</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Qt Topics</a> \n" \
+ " <ul id=\"topmenuTopic\"> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Basic Qt architecture</a></li> \n" \
+ " <li><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul id=\"topmenuexample\"> \n" \
+ " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
+ " <li><a href=\"tutorials.html\">Tutorials</a></li> \n" \
+ " <li><a href=\"demos.html\">Demos</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " </ul> \n" \
" </div>\n" \
" </div>\n" \
" <div class=\"wrapper\">\n" \
@@ -35,14 +72,14 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <div class=\"searchlabel\">\n" \
" Search index:</div>\n" \
" <div class=\"search\">\n" \
- " <form id=\"qtdocsearch\" action=\"\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
" <fieldset>\n" \
" <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\n" \
" </fieldset>\n" \
" </form>\n" \
" </div>\n" \
" <div class=\"box first bottombar\" id=\"lookup\">\n" \
- " <h2><span></span>\n" \
+ " <h2 title=\"API Lookup\"><span></span>\n" \
" API Lookup</h2>\n" \
" <div id=\"list001\" class=\"list\">\n" \
" <ul id=\"ul001\" >\n" \
@@ -56,7 +93,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" </div>\n" \
" </div>\n" \
" <div class=\"box bottombar\" id=\"topics\">\n" \
- " <h2><span></span>\n" \
+ " <h2 title=\"Qt Topics\"><span></span>\n" \
" Qt Topics</h2>\n" \
" <div id=\"list002\" class=\"list\">\n" \
" <ul id=\"ul002\" >\n" \
@@ -68,7 +105,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" </div>\n" \
" </div>\n" \
" <div class=\"box\" id=\"examples\">\n" \
- " <h2><span></span>\n" \
+ " <h2 title=\"Examples\"><span></span>\n" \
" Examples</h2>\n" \
" <div id=\"list003\" class=\"list\">\n" \
" <ul id=\"ul003\">\n" \
@@ -129,7 +166,7 @@ HTML.footer = " <!-- /div -->\n" \
" </div>\n" \
" <div id=\"blurpage\">\n" \
" </div>\n" \
- "<!-- <script type=\"text/javascript\">\n" \
+ "<script type=\"text/javascript\">\n" \
" var _gaq = _gaq || [];\n" \
" _gaq.push([\'_setAccount\', \'UA-4457116-5\']);\n" \
" _gaq.push([\'_trackPageview\']);\n" \
@@ -138,4 +175,4 @@ HTML.footer = " <!-- /div -->\n" \
" ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';\n" \
" var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);\n" \
" })();\n" \
- "</script> -->\n"
+ "</script>\n"
diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf
index 267d536..edf6d92 100644
--- a/tools/qdoc3/test/qt.qdocconf
+++ b/tools/qdoc3/test/qt.qdocconf
@@ -28,13 +28,17 @@ qhp.Qt.indexRoot =
qhp.Qt.extraFiles = index.html \
images/bg_l.png \
images/bg_l_blank.png \
- images/bg_r.png \
+ images/bg_ll_blank.png \
+ images/bg_ul_blank.png \
+ images/header_bg.png \
+ images/bg_r.png \
images/box_bg.png \
images/breadcrumb.png \
images/bullet_gt.png \
images/bullet_dn.png \
images/bullet_sq.png \
images/bullet_up.png \
+ images/arrow_down.png \
images/feedbackground.png \
images/horBar.png \
images/page.png \
@@ -47,6 +51,17 @@ qhp.Qt.extraFiles = index.html \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ scripts/shBrushCpp.js \
+ scripts/shCore.js \
+ scripts/shLegacy.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ style/shCore.css \
+ style/shThemeDefault.css \
+ style/narrow.css \
+ style/superfish.css \
+ style/superfish_skin.css \
+ style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
style/style_ie8.css \
diff --git a/tools/qml/content/Browser.qml b/tools/qml/content/Browser.qml
index 838a848..ff2bb47 100644
--- a/tools/qml/content/Browser.qml
+++ b/tools/qml/content/Browser.qml
@@ -134,7 +134,7 @@ Rectangle {
MouseArea {
id: mouseRegion
anchors.fill: parent
- onClicked: { launch() }
+ onClicked: { if (folders == wrapper.ListView.view.model) launch() }
}
states: [
State {
diff --git a/tools/qml/deviceorientation.h b/tools/qml/deviceorientation.h
index d209005..817bfc8 100644
--- a/tools/qml/deviceorientation.h
+++ b/tools/qml/deviceorientation.h
@@ -52,7 +52,14 @@ class DeviceOrientation : public QObject
Q_OBJECT
Q_ENUMS(Orientation)
public:
- enum Orientation { UnknownOrientation, Portrait, Landscape };
+ enum Orientation {
+ UnknownOrientation,
+ Portrait,
+ Landscape,
+ PortraitInverted,
+ LandscapeInverted
+ };
+
virtual Orientation orientation() const = 0;
virtual void setOrientation(Orientation) = 0;
diff --git a/tools/qml/deviceorientation_maemo.cpp b/tools/qml/deviceorientation_maemo.cpp
index 9f12f3d..7948e2a 100644
--- a/tools/qml/deviceorientation_maemo.cpp
+++ b/tools/qml/deviceorientation_maemo.cpp
@@ -102,8 +102,12 @@ private:
o = UnknownOrientation;
} else if (ax < -750) {
o = Portrait;
+ } else if (ax > 750) {
+ o = PortraitInverted;
} else if (ay < -750) {
o = Landscape;
+ } else if (ay > 750) {
+ o = LandscapeInverted;
}
return o;
diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp
index fe323c1..676881d 100644
--- a/tools/qml/qmlruntime.cpp
+++ b/tools/qml/qmlruntime.cpp
@@ -281,7 +281,12 @@ public:
ret << httpProxy;
return ret;
}
+#ifdef Q_OS_WIN
+ // systemProxyForQuery can take insanely long on Windows (QTBUG-10106)
+ return QNetworkProxyFactory::proxyForQuery(query);
+#else
return QNetworkProxyFactory::systemProxyForQuery(query);
+#endif
}
void setHttpProxy (QNetworkProxy proxy)
{
@@ -367,7 +372,7 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
#endif
, loggerWindow(new LoggerWidget())
, frame_stream(0), mb(0)
- , portraitOrientation(0), landscapeOrientation(0)
+ , orientation(0)
, showWarningsWindow(0)
, m_scriptOptions(0)
, tester(0)
@@ -418,7 +423,7 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
if (!(flags & Qt::FramelessWindowHint)) {
createMenu(menuBar(),0);
- setPortrait();
+ changeOrientation(orientation->actions().value(0));
}
#if !defined(Q_OS_SYMBIAN)
@@ -571,26 +576,25 @@ void QDeclarativeViewer::createMenu(QMenuBar *menu, QMenu *flatmenu)
QMenu *propertiesMenu = settingsMenu->addMenu(tr("Properties"));
- QActionGroup *orientation = new QActionGroup(parent);
+ orientation = new QActionGroup(parent);
- QAction *toggleOrientation = new QAction(tr("&Toggle Orientation"), parent);
- toggleOrientation->setCheckable(true);
- toggleOrientation->setShortcut(QKeySequence("Ctrl+T"));
- settingsMenu->addAction(toggleOrientation);
- connect(toggleOrientation, SIGNAL(triggered()), this, SLOT(toggleOrientation()));
+ QAction *rotateOrientation = new QAction(tr("Rotate orientation"), parent);
+ rotateOrientation->setShortcut(QKeySequence("Ctrl+T"));
+ settingsMenu->addAction(rotateOrientation);
+ connect(rotateOrientation, SIGNAL(triggered()), this, SLOT(rotateOrientation()));
orientation->setExclusive(true);
- portraitOrientation = new QAction(tr("orientation: Portrait"), parent);
- portraitOrientation->setCheckable(true);
- connect(portraitOrientation, SIGNAL(triggered()), this, SLOT(setPortrait()));
- orientation->addAction(portraitOrientation);
- propertiesMenu->addAction(portraitOrientation);
-
- landscapeOrientation = new QAction(tr("orientation: Landscape"), parent);
- landscapeOrientation->setCheckable(true);
- connect(landscapeOrientation, SIGNAL(triggered()), this, SLOT(setLandscape()));
- orientation->addAction(landscapeOrientation);
- propertiesMenu->addAction(landscapeOrientation);
+ connect(orientation, SIGNAL(triggered(QAction*)), this, SLOT(changeOrientation(QAction*)));
+
+ orientation->addAction(tr("orientation: Portrait"));
+ orientation->addAction(tr("orientation: Landscape"));
+ orientation->addAction(tr("orientation: Portrait (Inverted)"));
+ orientation->addAction(tr("orientation: Landscape (Inverted)"));
+ QList<QAction *> actions = orientation->actions();
+ for (int i=0; i<actions.count(); i++) {
+ propertiesMenu->addAction(actions[i]);
+ actions[i]->setCheckable(true);
+ }
if (flatmenu) flatmenu->addSeparator();
@@ -624,21 +628,16 @@ void QDeclarativeViewer::proxySettingsChanged()
reload ();
}
-void QDeclarativeViewer::setPortrait()
-{
- DeviceOrientation::instance()->setOrientation(DeviceOrientation::Portrait);
- portraitOrientation->setChecked(true);
-}
-
-void QDeclarativeViewer::setLandscape()
+void QDeclarativeViewer::rotateOrientation()
{
- DeviceOrientation::instance()->setOrientation(DeviceOrientation::Landscape);
- landscapeOrientation->setChecked(true);
-}
+ QAction *current = orientation->checkedAction();
+ QList<QAction *> actions = orientation->actions();
+ int index = actions.indexOf(current);
+ if (index < 0)
+ return;
-void QDeclarativeViewer::toggleOrientation()
-{
- DeviceOrientation::instance()->setOrientation(DeviceOrientation::instance()->orientation()==DeviceOrientation::Portrait?DeviceOrientation::Landscape:DeviceOrientation::Portrait);
+ QAction *newOrientation = actions[(index + 1) % actions.count()];
+ changeOrientation(newOrientation);
}
void QDeclarativeViewer::toggleFullScreen()
@@ -805,11 +804,11 @@ void QDeclarativeViewer::statusChanged()
tester->executefailure();
if (canvas->status() == QDeclarativeView::Ready) {
- initialSize = canvas->sizeHint();
+ initialSize = canvas->initialSize();
if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) {
- updateSizeHints();
if (!isFullScreen() && !isMaximized()) {
resize(QSize(initialSize.width(), initialSize.height()+menuBarHeight()));
+ updateSizeHints();
}
}
}
@@ -942,7 +941,7 @@ void QDeclarativeViewer::sceneResized(QSize size)
if (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject) {
updateSizeHints();
}
- }
+ }
}
void QDeclarativeViewer::keyPressEvent(QKeyEvent *event)
@@ -971,12 +970,7 @@ void QDeclarativeViewer::keyPressEvent(QKeyEvent *event)
} else if (event->key() == Qt::Key_F9 || (event->key() == Qt::Key_9 && devicemode)) {
toggleRecording();
} else if (event->key() == Qt::Key_F10) {
- if (portraitOrientation) {
- if (portraitOrientation->isChecked())
- setLandscape();
- else
- setPortrait();
- }
+ rotateOrientation();
}
QWidget::keyPressEvent(event);
@@ -1181,6 +1175,23 @@ void QDeclarativeViewer::recordFrame()
}
}
+void QDeclarativeViewer::changeOrientation(QAction *action)
+{
+ if (!action)
+ return;
+ action->setChecked(true);
+
+ QString o = action->text().split(QLatin1Char(':')).value(1).trimmed();
+ if (o == QLatin1String("Portrait"))
+ DeviceOrientation::instance()->setOrientation(DeviceOrientation::Portrait);
+ else if (o == QLatin1String("Landscape"))
+ DeviceOrientation::instance()->setOrientation(DeviceOrientation::Landscape);
+ else if (o == QLatin1String("Portrait (Inverted)"))
+ DeviceOrientation::instance()->setOrientation(DeviceOrientation::PortraitInverted);
+ else if (o == QLatin1String("Landscape (Inverted)"))
+ DeviceOrientation::instance()->setOrientation(DeviceOrientation::LandscapeInverted);
+}
+
void QDeclarativeViewer::orientationChanged()
{
if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) {
@@ -1253,7 +1264,6 @@ void QDeclarativeViewer::updateSizeHints()
setMinimumSize(QSize(0,0));
setMaximumSize(QSize(16777215,16777215));
}
- updateGeometry();
}
void QDeclarativeViewer::registerTypes()
diff --git a/tools/qml/qmlruntime.h b/tools/qml/qmlruntime.h
index 5086e02..27bd217 100644
--- a/tools/qml/qmlruntime.h
+++ b/tools/qml/qmlruntime.h
@@ -124,7 +124,7 @@ public slots:
void ffmpegFinished(int code);
void showProxySettings ();
void proxySettingsChanged ();
- void toggleOrientation();
+ void rotateOrientation();
void statusChanged();
void setSlowMode(bool);
void launch(const QString &);
@@ -140,9 +140,8 @@ private slots:
void recordFrame();
void chooseRecordingOptions();
void pickRecordingFile();
- void setPortrait();
- void setLandscape();
void toggleFullScreen();
+ void changeOrientation(QAction*);
void orientationChanged();
void showWarnings(bool show);
@@ -183,9 +182,7 @@ private:
bool ffmpegAvailable;
bool convertAvailable;
- QAction *portraitOrientation;
- QAction *landscapeOrientation;
-
+ QActionGroup *orientation;
QAction *showWarningsWindow;
QString m_script;
diff --git a/translations/assistant_hu.ts b/translations/assistant_hu.ts
index e43070c..50e30d7 100644
--- a/translations/assistant_hu.ts
+++ b/translations/assistant_hu.ts
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="hu">
+<TS version="2.0" language="hu_HU">
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+117"/>
<source>&amp;Close</source>
- <translation>&amp;Bezárás</translation>
+ <translation>Be&amp;zárás</translation>
</message>
</context>
<context>
<name>AboutLabel</name>
<message>
- <location line="-14"/>
+ <location line="-15"/>
<source>Warning</source>
<translation>Figyelmeztetés</translation>
</message>
@@ -20,17 +20,91 @@
<location line="+1"/>
<source>Unable to launch external application.
</source>
- <translation>Nem lehet külső alkalmazást elindítani.</translation>
+ <translation>A külső alkalmazás elindítása sikertelen.
+</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+0"/>
<source>OK</source>
<translation>OK</translation>
</message>
</context>
<context>
+ <name>Assistant</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+177"/>
+ <source>Error registering documentation file &apos;%1&apos;: %2</source>
+ <translation>Hiba a(z) &apos;%1&apos; dokumentáció fájl regisztrálásakor: %2</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Error: %1</source>
+ <translation>Hiba: %1</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Could not register documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>A dokumentációs fájl regisztrálása sikertelen
+%1
+
+Oka:
+%2</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Documentation successfully registered.</source>
+ <translation>A dokumentáció regisztrálása sikerült.</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Could not unregister documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>A dokumentációs fájl eltávolítása sikertelen
+%1
+
+Oka:
+%2</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Documentation successfully unregistered.</source>
+ <translation>A dokumentáció eltávolítása sikerült.</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Error reading collection file &apos;%1&apos;: %2.</source>
+ <translation>Hiba a(z) &apos;%1&apos; gyűjteményfájl olvasásakor: %2.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Error creating collection file &apos;%1&apos;: %2.</source>
+ <translation>Hiba a(z) &apos;%1&apos; gyűjteményfájl létrehozásakor: %2.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Error reading collection file &apos;%1&apos;: %2</source>
+ <translation>Hiba a(z) &apos;%1&apos; gyűjteményfájl olvasásakor: %2</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Cannot load sqlite database driver!</source>
+ <translation>Az sqlite adatbázisdriver nem tölthető be!</translation>
+ </message>
+</context>
+<context>
<name>BookmarkDialog</name>
<message>
+ <source>Bookmarks</source>
+ <translation type="obsolete">Könyvjelzők</translation>
+ </message>
+ <message>
<location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
<source>Add Bookmark</source>
<translation>Könyvjelző hozzáadása</translation>
@@ -43,96 +117,85 @@
<message>
<location/>
<source>Add in Folder:</source>
- <translation>Hozzáadás dossziéban:</translation>
+ <translation>Hozzáadás ide:</translation>
</message>
<message>
<location/>
- <source>New Folder</source>
- <translation>Új dosszié</translation>
- </message>
- <message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+184"/>
- <location line="+18"/>
- <location line="+39"/>
- <location line="+18"/>
- <location line="+30"/>
- <source>Bookmarks</source>
- <translation>Könyvjelzők</translation>
- </message>
- <message>
- <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
<source>+</source>
<translation>+</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="-61"/>
+ <location/>
+ <source>New Folder</source>
+ <translation>Új mappa</translation>
+ </message>
+ <message>
<source>Delete Folder</source>
- <translation>Dosszié törlése</translation>
+ <translation type="obsolete">Mappa törlése</translation>
</message>
<message>
- <location line="+1"/>
<source>Rename Folder</source>
- <translation>Dosszié átnevezése</translation>
+ <translation type="obsolete">Mappa átnevezése</translation>
</message>
</context>
<context>
<name>BookmarkManager</name>
<message>
- <location line="+435"/>
<source>Bookmarks</source>
- <translation>Könyvjelzők</translation>
+ <translation type="obsolete">Könyvjelzők</translation>
</message>
<message>
- <location line="+37"/>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+151"/>
+ <source>Untitled</source>
+ <translation>Névtelen</translation>
+ </message>
+ <message>
+ <location line="+65"/>
<source>Remove</source>
- <translation>Áthelyezés</translation>
+ <translation>Törlés</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>Egy olyan dossziét fog törölni, ami &lt;br&gt; törli annak tartalmát is. Biztos benne, hogy folytatja?</translation>
+ <translation>A mappa törlésekor a tartalma is megsemmisül.&lt;br&gt;Biztosan folytatja?</translation>
</message>
<message>
- <location line="+143"/>
- <location line="+9"/>
- <source>New Folder</source>
- <translation>Új Dosszié</translation>
+ <location line="+147"/>
+ <source>Manage Bookmarks...</source>
+ <translation>Könyvjelzők kezelése...</translation>
</message>
-</context>
-<context>
- <name>BookmarkWidget</name>
<message>
- <location line="-417"/>
- <source>Filter:</source>
- <translation>Szűrő:</translation>
+ <location line="+3"/>
+ <source>Add Bookmark...</source>
+ <translation>Könyvjelző hozzáadása...</translation>
</message>
<message>
- <location line="+33"/>
- <source>Remove</source>
- <translation>Eltávolítás</translation>
+ <location line="+1"/>
+ <source>Ctrl+D</source>
+ <translation></translation>
</message>
<message>
- <location line="-79"/>
+ <location line="+68"/>
<source>Delete Folder</source>
- <translation>Dosszié törlése</translation>
+ <translation>Mappa törlése</translation>
</message>
<message>
<location line="+1"/>
<source>Rename Folder</source>
- <translation>Dosszié átnevezése</translation>
+ <translation>Mappa átnevezése</translation>
</message>
<message>
<location line="+2"/>
<source>Show Bookmark</source>
- <translation>Könyvjelző megjelenítése</translation>
+ <translation>Könyvjelző megnyitása</translation>
</message>
<message>
<location line="+1"/>
<source>Show Bookmark in New Tab</source>
- <translation>Könyvjelző megjelenítése új lapon</translation>
+ <translation>Könyvjelző megnyitása új fülön</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Delete Bookmark</source>
<translation>Könyvjelző törlése</translation>
</message>
@@ -142,64 +205,165 @@
<translation>Könyvjelző átnevezése</translation>
</message>
<message>
- <location line="+62"/>
+ <source>New Folder</source>
+ <translation type="obsolete">Új mappa</translation>
+ </message>
+</context>
+<context>
+ <name>BookmarkWidget</name>
+ <message>
+ <source>Filter:</source>
+ <translation type="obsolete">Szűrő:</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation type="obsolete">Törlés</translation>
+ </message>
+ <message>
+ <source>Delete Folder</source>
+ <translation type="obsolete">Mappa törlése</translation>
+ </message>
+ <message>
+ <source>Rename Folder</source>
+ <translation type="obsolete">Mappa átnevezése</translation>
+ </message>
+ <message>
+ <source>Show Bookmark</source>
+ <translation type="obsolete">Könyvjelző megnyitása</translation>
+ </message>
+ <message>
+ <source>Show Bookmark in New Tab</source>
+ <translation type="obsolete">Könyvjelző megnyitása új fülön</translation>
+ </message>
+ <message>
+ <source>Delete Bookmark</source>
+ <translation type="obsolete">Könyvjelző törlése</translation>
+ </message>
+ <message>
+ <source>Rename Bookmark</source>
+ <translation type="obsolete">Könyvjelző átnevezése</translation>
+ </message>
+ <message>
<source>Add</source>
- <translation>Hozzáadás</translation>
+ <translation type="obsolete">Hozzáadás</translation>
</message>
</context>
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+239"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+121"/>
<source>Add new page</source>
- <translation>Új lap hozzáadása</translation>
+ <translation>Új fül hozzáadása</translation>
</message>
<message>
<location line="+9"/>
<source>Close current page</source>
- <translation>Aktuális lap bezárása</translation>
+ <translation>Az aktuális fül bezárása</translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+287"/>
<source>Print Document</source>
<translation>Dokumentum nyomtatása</translation>
</message>
<message>
- <location line="+130"/>
+ <location line="+126"/>
<location line="+2"/>
<source>unknown</source>
<translation>ismeretlen</translation>
</message>
<message>
- <location line="+93"/>
+ <location line="+101"/>
<source>Add New Page</source>
- <translation>Új lap hozzáadása</translation>
+ <translation>Új fül hozzáadása</translation>
</message>
<message>
<location line="+3"/>
<source>Close This Page</source>
- <translation>Lap bezárása</translation>
+ <translation>Az aktuális fül bezárása</translation>
</message>
<message>
<location line="+3"/>
<source>Close Other Pages</source>
- <translation>Többi lap bezárása</translation>
+ <translation>A többi fül bezárása</translation>
</message>
<message>
<location line="+5"/>
<source>Add Bookmark for this Page...</source>
- <translation>Könyvjelző hozzáadása ehhez a laphoz...</translation>
+ <translation>A lap mentése könyvjelzőként...</translation>
</message>
<message>
- <location line="+235"/>
+ <location line="+264"/>
<source>Search</source>
<translation>Keresés</translation>
</message>
</context>
<context>
+ <name>CmdLineParser</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+137"/>
+ <source>Unknown option: %1</source>
+ <translation>Ismeretlen opció: %1</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>The collection file &apos;%1&apos; does not exist.</source>
+ <translation>A(z) &apos;%1&apos; gyűjteményfájl nem található.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Missing collection file.</source>
+ <translation>Hiányzó gyűjteményfájl.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Invalid URL &apos;%1&apos;.</source>
+ <translation>Érvénytelen URL: &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Missing URL.</source>
+ <translation>Hiányzó URL.</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Unknown widget: %1</source>
+ <translation>Ismeretlen elem: %1</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Missing widget.</source>
+ <translation>Hiányzó elem.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>The Qt help file &apos;%1&apos; does not exist.</source>
+ <translation>A(z) &apos;%1&apos; Qt súgófájl nem létezik.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Missing help file.</source>
+ <translation>Hiányzó súgófájl.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Missing filter argument.</source>
+ <translation>Hiányzó szűrőparaméter.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Notice</source>
+ <translation>Információ</translation>
+ </message>
+</context>
+<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+158"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+173"/>
<source>Open Link</source>
<translation>Link megnyitása</translation>
</message>
@@ -214,40 +378,35 @@
<message>
<location filename="../tools/assistant/tools/assistant/filternamedialog.ui"/>
<source>Add Filter Name</source>
- <translation>Szűrő név hozzáadása</translation>
+ <translation>Szűrőnév hozzáadása</translation>
</message>
<message>
<location/>
<source>Filter Name:</source>
- <translation>Szűrő név:</translation>
+ <translation>Szűrő neve:</translation>
</message>
</context>
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-918"/>
<source>Previous</source>
- <translation>Előző</translation>
+ <translation type="obsolete">Előző</translation>
</message>
<message>
- <location line="+4"/>
<source>Next</source>
- <translation>Következő</translation>
+ <translation type="obsolete">Következő</translation>
</message>
<message>
- <location line="+4"/>
<source>Case Sensitive</source>
- <translation>Kis és nagybetű érzékeny</translation>
+ <translation type="obsolete">Kis/nagybetű érzékeny</translation>
</message>
<message>
- <location line="+3"/>
<source>Whole words</source>
- <translation>Egész szavakat</translation>
+ <translation type="obsolete">Teljes szó</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;Keresés tördelése</translation>
+ <translation type="obsolete">&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;A keresés megszakítva</translation>
</message>
</context>
<context>
@@ -255,77 +414,77 @@
<message>
<location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
- <translation>Betű</translation>
+ <translation>Betűtípus</translation>
</message>
<message>
<location line="+11"/>
<source>&amp;Writing system</source>
- <translation>Rendszer &amp;írása</translation>
+ <translation>Írás&amp;rendszer</translation>
</message>
<message>
<location line="+3"/>
<source>&amp;Family</source>
- <translation>&amp;Család</translation>
+ <translation>Betű&amp;típus</translation>
</message>
<message>
<location line="+4"/>
<source>&amp;Style</source>
- <translation>&amp;Stílus</translation>
+ <translation>Betű&amp;stílus</translation>
</message>
<message>
<location line="+4"/>
<source>&amp;Point size</source>
- <translation>&amp;Pont méret</translation>
+ <translation>Betű&amp;méret</translation>
</message>
</context>
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+489"/>
<source>Help</source>
- <translation>Segítség</translation>
+ <translation type="obsolete">Súgó</translation>
</message>
<message>
- <location line="+1"/>
<source>OK</source>
- <translation>OK</translation>
+ <translation type="obsolete">OK</translation>
</message>
<message>
- <location line="-62"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+58"/>
+ <source>&lt;title&gt;about:blank&lt;/title&gt;</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+6"/>
<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-es hiba...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;A lap nem található &lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</translation>
+ <translation>&lt;title&gt;404-es hiba...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;A lap nem található&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;Link címének másolása</translation>
+ <translation type="obsolete">&amp;Link címének másolása</translation>
</message>
<message>
- <location line="+3"/>
<source>Open Link in New Tab Ctrl+LMB</source>
- <translation>Link megnyitása új lapon Ctrl+LMB</translation>
+ <translation type="obsolete">Link megnyitása új lapon Ctrl+LMB</translation>
</message>
<message>
- <location line="-275"/>
<source>Open Link in New Tab</source>
- <translation>Link megnyitása új lapon</translation>
+ <translation type="obsolete">Link megnyitása új lapon</translation>
</message>
<message>
- <location line="+209"/>
<source>Unable to launch external application.
</source>
- <translation>Nem lehet külső alkalmazást indítani.</translation>
+ <translation type="obsolete">A külső alkalmazás elindítása sikertelen.
+</translation>
</message>
</context>
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+68"/>
<source>&amp;Look for:</source>
- <translation>&amp;Keresés:</translation>
+ <translation>&amp;Amit keres:</translation>
</message>
<message>
- <location line="+68"/>
+ <location line="+74"/>
<source>Open Link</source>
<translation>Link megnyitása</translation>
</message>
@@ -339,36 +498,36 @@
<name>InstallDialog</name>
<message>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+76"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+78"/>
<source>Install Documentation</source>
- <translation></translation>
+ <translation>Dokumentáció telepítése</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+30"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+33"/>
<source>Downloading documentation info...</source>
- <translation>Dokumentum információ letöltése...</translation>
+ <translation>A dokumentáció információinak letöltése...</translation>
</message>
<message>
- <location line="+48"/>
+ <location line="+51"/>
<source>Download canceled.</source>
- <translation>Letöltés vmegszakítva.</translation>
+ <translation>Letöltés megszakítva.</translation>
</message>
<message>
- <location line="+26"/>
- <location line="+78"/>
+ <location line="+28"/>
+ <location line="+79"/>
<location line="+27"/>
<source>Done.</source>
<translation>Kész.</translation>
</message>
<message>
- <location line="-90"/>
+ <location line="-91"/>
<source>The file %1 already exists. Do you want to overwrite it?</source>
- <translation>A(z) %1 fájl már létezik. Felül szeretné írni?</translation>
+ <translation>A(z) &apos;%1&apos; nevű fájl már létezik. Felülírja?</translation>
</message>
<message>
<location line="+11"/>
<source>Unable to save the file %1: %2.</source>
- <translation>Nem lehet elmenteni a(z) %1 fájlt: %2.</translation>
+ <translation>A(z) %1 mentése sikertelen: %2.</translation>
</message>
<message>
<location line="+8"/>
@@ -376,37 +535,38 @@
<translation>%1 letöltése...</translation>
</message>
<message>
- <location line="+19"/>
+ <location line="+20"/>
<location line="+42"/>
- <location line="+38"/>
+ <location line="+40"/>
<source>Download failed: %1.</source>
- <translation>Nem sikerült a letöltés: %1.</translation>
+ <translation>A letöltés sikertelen: %1.</translation>
</message>
<message>
- <location line="-70"/>
+ <location line="-72"/>
<source>Documentation info file is corrupt!</source>
- <translation>Dokumentum információ sérült!</translation>
+ <translation>A dokumentáció információs fájlja sérült!</translation>
</message>
<message>
<location line="+37"/>
<source>Download failed: Downloaded file is corrupted.</source>
- <translation>Nem sikerült letölteni: A letöltött fájl sérült.</translation>
+ <translation>A letöltés sikertelen: a letöltött fájl sérült.</translation>
</message>
<message>
<location line="+2"/>
<source>Installing documentation %1...</source>
- <translation>%1 dokumentáció telepítése...</translation>
+ <translation>Dokumentáció telepítése %1...</translation>
</message>
<message>
- <location line="+22"/>
+ <location line="+23"/>
<source>Error while installing documentation:
%1</source>
- <translation>Hiba történt a dokumentáció telepítése közben: %1</translation>
+ <translation>Hiba a dokumentáció telepítésekor:
+%1</translation>
</message>
<message>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Available Documentation:</source>
- <translation>Elérhető dokumentáció:</translation>
+ <translation>Elérhető dokumentációk:</translation>
</message>
<message>
<location/>
@@ -416,7 +576,7 @@
<message>
<location/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
<location/>
@@ -437,20 +597,20 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+110"/>
- <location line="+383"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+123"/>
+ <location line="+369"/>
<source>Index</source>
<translation>Index</translation>
</message>
<message>
- <location line="-377"/>
- <location line="+375"/>
+ <location line="-363"/>
+ <location line="+361"/>
<source>Contents</source>
<translation>Tartalom</translation>
</message>
<message>
- <location line="-370"/>
- <location line="+374"/>
+ <location line="-354"/>
+ <location line="+358"/>
<source>Bookmarks</source>
<translation>Könyvjelzők</translation>
</message>
@@ -460,27 +620,25 @@
<translation>Keresés</translation>
</message>
<message>
- <location line="-364"/>
- <location line="+207"/>
- <location line="+514"/>
+ <location line="-338"/>
+ <location line="+680"/>
+ <location line="+284"/>
<source>Qt Assistant</source>
- <translation>Qt Assistant</translation>
+ <translation>Qt Asszisztens</translation>
</message>
<message>
- <location line="-546"/>
- <location line="+5"/>
<source>Unfiltered</source>
- <translation>Szűrés nélküli</translation>
+ <translation type="obsolete">Szűrő kikapcsolása</translation>
</message>
<message>
- <location line="+107"/>
+ <location line="-705"/>
<source>Page Set&amp;up...</source>
- <translation>Lap Beállí&amp;tás...</translation>
+ <translation>&amp;Oldalbeállítás...</translation>
</message>
<message>
<location line="+2"/>
<source>Print Preview...</source>
- <translation>Nyomtatási előnézet...</translation>
+ <translation>Nyomtatási kép...</translation>
</message>
<message>
<location line="+3"/>
@@ -488,29 +646,34 @@
<translation>&amp;Nyomtatás...</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="-10"/>
<source>New &amp;Tab</source>
- <translation>Új &amp;Lap</translation>
+ <translation>Új &amp;fül</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+17"/>
<source>&amp;Close Tab</source>
- <translation>Lap &amp;bezárása</translation>
+ <translation>Fül be&amp;zárása</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+5"/>
<source>&amp;Quit</source>
<translation>&amp;Kilépés</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+3"/>
+ <source>CTRL+Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+6"/>
<source>&amp;Copy selected Text</source>
- <translation>Kiválasztott szöveg &amp;másolása</translation>
+ <translation>A kijelölés &amp;másolása</translation>
</message>
<message>
<location line="+8"/>
<source>&amp;Find in Text...</source>
- <translation>&amp;Keresés szövegben...</translation>
+ <translation>Ke&amp;resés a szövegben...</translation>
</message>
<message>
<location line="+2"/>
@@ -520,12 +683,12 @@
<message>
<location line="+4"/>
<source>Find &amp;Next</source>
- <translation>&amp;Következő keresés</translation>
+ <translation>Követke&amp;ző keresése</translation>
</message>
<message>
<location line="+4"/>
<source>Find &amp;Previous</source>
- <translation>&amp;Előző keresés</translation>
+ <translation>&amp;Előző keresése</translation>
</message>
<message>
<location line="+5"/>
@@ -535,42 +698,42 @@
<message>
<location line="+4"/>
<source>Zoom &amp;in</source>
- <translation>&amp;Nagyítás</translation>
+ <translation>Na&amp;gyítás</translation>
</message>
<message>
<location line="+6"/>
<source>Zoom &amp;out</source>
- <translation>&amp;Kicsinyítés</translation>
+ <translation>Ki&amp;csinyítés</translation>
</message>
<message>
<location line="+6"/>
<source>Normal &amp;Size</source>
- <translation>Normál &amp;méret</translation>
+ <translation>Normá&amp;l méret</translation>
</message>
<message>
<location line="+4"/>
<source>Ctrl+0</source>
- <translation>Ctrl + 0</translation>
+ <translation></translation>
</message>
<message>
<location line="+5"/>
<source>ALT+C</source>
- <translation>ALT + C</translation>
+ <translation></translation>
</message>
<message>
<location line="+2"/>
<source>ALT+I</source>
- <translation>ALT + l</translation>
+ <translation></translation>
</message>
<message>
<location line="+4"/>
<source>ALT+S</source>
- <translation>ALT + S</translation>
+ <translation></translation>
</message>
<message>
<location line="+3"/>
<source>&amp;Home</source>
- <translation>&amp;Otthon</translation>
+ <translation>Kezdőla&amp;p</translation>
</message>
<message>
<location line="+4"/>
@@ -585,7 +748,7 @@
<message>
<location line="+6"/>
<source>Sync with Table of Contents</source>
- <translation>Tartalomjegyzékkel való szinkronizálás</translation>
+ <translation>Szinkronizálás a tartalomjegyzékkel</translation>
</message>
<message>
<location line="+2"/>
@@ -595,57 +758,61 @@
<message>
<location line="+5"/>
<source>Next Page</source>
- <translation>Következő lap</translation>
+ <translation>Következő oldal</translation>
</message>
<message>
<location line="+1"/>
<source>Ctrl+Alt+Right</source>
- <translation>Ctrl+Alt+Right</translation>
+ <translation></translation>
</message>
<message>
<location line="+3"/>
<source>Previous Page</source>
- <translation>Előző lap</translation>
+ <translation>Előző oldal</translation>
</message>
<message>
<location line="+1"/>
<source>Ctrl+Alt+Left</source>
- <translation>Ctrl+Alt+Left</translation>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+596"/>
+ <source>Could not register file &apos;%1&apos;: %2</source>
+ <translation>A(z) &apos;%1&apos; fájl regisztrálása sikertelen: %2</translation>
</message>
<message>
- <location line="+4"/>
<source>Add Bookmark...</source>
- <translation>Könyvjelző hozzáadása...</translation>
+ <translation type="obsolete">Könyvjelző hozzáadása...</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="-589"/>
<source>About...</source>
<translation>Névjegy...</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+21"/>
<source>Navigation Toolbar</source>
<translation>Navigációs eszköztár</translation>
</message>
<message>
- <location line="+76"/>
+ <location line="+69"/>
<source>Toolbars</source>
- <translation>Eszköztár</translation>
+ <translation>Eszköztárak</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+16"/>
<source>Filter Toolbar</source>
- <translation>Eszköztár szűrő</translation>
+ <translation>Szűrő eszköztár</translation>
</message>
<message>
<location line="+2"/>
<source>Filtered by:</source>
- <translation>Szűrési feltétel:</translation>
+ <translation>Szűrés alapja: </translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+26"/>
<source>Address Toolbar</source>
- <translation>Eszköztár cím</translation>
+ <translation>Cím eszköztár</translation>
</message>
<message>
<location line="+4"/>
@@ -653,27 +820,27 @@
<translation>Cím:</translation>
</message>
<message>
- <location line="+114"/>
+ <location line="+112"/>
<source>Could not find the associated content item.</source>
- <translation>Nem sikerült az összekapcsolt tartalom elemet megtalálni.</translation>
+ <translation>A hozzárendelt tartalom nem található.</translation>
</message>
<message>
- <location line="+71"/>
+ <location line="+60"/>
<source>About %1</source>
- <translation>%1-ről</translation>
+ <translation>%1 névjegye</translation>
</message>
<message>
- <location line="+114"/>
+ <location line="+175"/>
<source>Updating search index</source>
<translation>Keresési index frissítése</translation>
</message>
<message>
- <location line="-640"/>
+ <location line="-669"/>
<source>Looking for Qt Documentation...</source>
<translation>Qt dokumentáció keresése...</translation>
</message>
<message>
- <location line="+241"/>
+ <location line="+227"/>
<source>&amp;Window</source>
<translation>&amp;Ablak</translation>
</message>
@@ -685,22 +852,22 @@
<message>
<location line="+1"/>
<source>Ctrl+M</source>
- <translation>Ctrl + M</translation>
+ <translation></translation>
</message>
<message>
<location line="-2"/>
<source>Zoom</source>
- <translation>Zoomolás</translation>
+ <translation>Nagyítás</translation>
</message>
<message>
- <location line="-159"/>
+ <location line="-169"/>
<source>&amp;File</source>
<translation>&amp;Fájl</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+32"/>
<source>&amp;Edit</source>
- <translation>&amp;Szerkesztés</translation>
+ <translation>S&amp;zerkesztés</translation>
</message>
<message>
<location line="+27"/>
@@ -710,51 +877,46 @@
<message>
<location line="+30"/>
<source>&amp;Go</source>
- <translation>&amp;Gyerünk</translation>
+ <translation>&amp;Előre</translation>
</message>
<message>
<location line="+2"/>
<source>ALT+Home</source>
- <translation>ALT+Home</translation>
+ <translation></translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+30"/>
<source>&amp;Bookmarks</source>
- <translation>&amp;Könyvjelzők</translation>
+ <translation>Könyv&amp;jelzők</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+2"/>
<source>&amp;Help</source>
- <translation>&amp;Segítség</translation>
+ <translation>&amp;Súgó</translation>
</message>
<message>
- <location line="-40"/>
+ <location line="-38"/>
<source>ALT+O</source>
- <translation>ALT + 0</translation>
- </message>
- <message>
- <location line="+38"/>
- <source>CTRL+D</source>
- <translation>CTRL+D</translation>
+ <translation></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+259"/>
- <location line="+43"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+252"/>
+ <location line="+44"/>
<source>Add Documentation</source>
<translation>Dokumentáció hozzáadása</translation>
</message>
<message>
- <location line="-43"/>
+ <location line="-44"/>
<source>Qt Compressed Help Files (*.qch)</source>
- <translation>Qt tömörített súgó fájlok (*.qch)</translation>
+ <translation>Qt tömörített súgófájlok (*.qch)</translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+38"/>
<source>The specified file is not a valid Qt Help File!</source>
- <translation>A meghatározott fájl egy érvénytelen Qt Súgó fájl!</translation>
+ <translation>A megadott fájl nem Qt súgófájl!</translation>
</message>
<message>
<location line="-8"/>
@@ -762,19 +924,19 @@
<translation>A(z) %1 névtér már regisztrálva van!</translation>
</message>
<message>
- <location line="+31"/>
+ <location line="+32"/>
<source>Remove Documentation</source>
<translation>Dokumentáció eltávolítása</translation>
</message>
<message>
<location line="+1"/>
<source>Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents.</source>
- <translation>Néhány dokumentum jelenleg az Assistant hivatkozásban lett megnyitva, amely az a dokumentum, amit megpróbál eltávolítani. A dokumentum eltávolítása be fogja zárni azokat a dokumentumokat.</translation>
+ <translation>Az eltávolítani kívánt dokumentációból néhány dokumentum jelenleg meg van nyitva az Asszisztensben. A dokumentáció eltávolításával ezen dokumentumok automatikusan bezárulnak.</translation>
</message>
<message>
<location line="+2"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
<location line="+1"/>
@@ -782,9 +944,9 @@
<translation>OK</translation>
</message>
<message>
- <location line="+88"/>
+ <location line="+83"/>
<source>Use custom settings</source>
- <translation>Szokásos beállítások használata</translation>
+ <translation>Egyéni beállítások használata</translation>
</message>
</context>
<context>
@@ -797,12 +959,12 @@
<message>
<location/>
<source>Fonts</source>
- <translation>Betűk</translation>
+ <translation>Betűtípus</translation>
</message>
<message>
<location/>
<source>Font settings:</source>
- <translation>Betű beállítások:</translation>
+ <translation>Betűtípus beállítása:</translation>
</message>
<message>
<location/>
@@ -822,17 +984,17 @@
<message>
<location/>
<source>Filter:</source>
- <translation>Szűrők:</translation>
+ <translation>Szűrő:</translation>
</message>
<message>
<location/>
<source>Attributes:</source>
- <translation>Attrubútumok:</translation>
+ <translation>Attribútumok:</translation>
</message>
<message>
<location/>
<source>1</source>
- <translation>1</translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -842,7 +1004,7 @@
<message>
<location/>
<source>Remove</source>
- <translation>Eltávolítás</translation>
+ <translation>Törlés</translation>
</message>
<message>
<location/>
@@ -867,37 +1029,38 @@
<message>
<location/>
<source>Current Page</source>
- <translation>Aktuális lap</translation>
+ <translation>Aktuális oldal</translation>
</message>
<message>
<location/>
<source>Restore to default</source>
- <translation>Alapértelmezett beállítások visszaállítása</translation>
+ <translation>Alapértelmezés</translation>
</message>
<message>
<location/>
<source>Homepage</source>
- <translation>Honlap</translation>
+ <translation>Kezdőlap</translation>
</message>
<message>
<location/>
<source>On help start:</source>
- <translation>Súgó indításra:</translation>
+ <translation>A súgó indításakor:</translation>
</message>
<message>
<location/>
<source>Show my home page</source>
- <translation>Honlapom megjelenítése</translation>
+ <translation>Mutassa a kezdőlapomat</translation>
</message>
<message>
<location/>
<source>Show a blank page</source>
- <translation>Egy üres lap megjelenítése</translation>
+ <translation>Mutasson egy üres lapot</translation>
</message>
<message>
<location/>
<source>Show my tabs from last session</source>
- <translation>A lapjaim megjelenításe a legutolsó szakaszból</translation>
+ <translatorcomment>Too long...</translatorcomment>
+ <translation>Mutassa az előzőleg megnyitott füleket</translation>
</message>
<message>
<location/>
@@ -908,131 +1071,111 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
<source>The specified collection file does not exist!</source>
- <translation>A meghatározott gyűjtemény fájl nem létezik!</translation>
+ <translation type="obsolete">A megadott gyűjtemény nem található!</translation>
</message>
<message>
- <location line="+4"/>
<source>Missing collection file!</source>
- <translation>Hiányzó gyűjtemény fájl!</translation>
+ <translation type="obsolete">A gyűjtemény fájl hiányzik!</translation>
</message>
<message>
- <location line="+9"/>
<source>Invalid URL!</source>
- <translation>Érvénytelen URL!</translation>
+ <translation type="obsolete">Az URL érvénytelen!</translation>
</message>
<message>
- <location line="+4"/>
<source>Missing URL!</source>
- <translation>Hiányzó URL!</translation>
+ <translation type="obsolete">Az URL hiányzik!</translation>
</message>
<message>
- <location line="+17"/>
- <location line="+19"/>
- <location line="+19"/>
<source>Unknown widget: %1</source>
- <translation>Ismeretlen widget: %1</translation>
+ <translation type="obsolete">Ismeretlen elem: %1</translation>
</message>
<message>
- <location line="-34"/>
- <location line="+19"/>
- <location line="+19"/>
<source>Missing widget!</source>
- <translation>Hiányzó widget!</translation>
+ <translation type="obsolete">Az elem hiányzik!</translation>
</message>
<message>
- <location line="+7"/>
- <location line="+12"/>
<source>The specified Qt help file does not exist!</source>
- <translation>A meghatározott Qt súgó fájl nem létezik!</translation>
+ <translation type="obsolete">A megadott Qt súgófájl nem található!</translation>
</message>
<message>
- <location line="-7"/>
- <location line="+12"/>
<source>Missing help file!</source>
- <translation>Hiányzó súgó fájl!</translation>
+ <translation type="obsolete">A súgófájl hiányzik!</translation>
</message>
<message>
- <location line="+7"/>
<source>Missing filter argument!</source>
- <translation>Hiányzó szűrő argumentum!</translation>
+ <translation type="obsolete">A szűrőparaméter hiányzik!</translation>
</message>
<message>
- <location line="+12"/>
<source>Unknown option: %1</source>
- <translation>Ismeretlen opció: %1</translation>
+ <translation type="obsolete">Ismeretlen opció: %1</translation>
</message>
<message>
- <location line="+30"/>
- <location line="+2"/>
<source>Qt Assistant</source>
- <translation>Qt Assistant</translation>
+ <translation type="obsolete">Qt Asszisztens</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+225"/>
<source>Could not register documentation file
%1
Reason:
%2</source>
- <translation>Nem sikerült a dokumentációs fájl regisztrálása
+ <translation type="obsolete">A dokumentációs fájl regisztrálása sikertelen
%1
-Ok:
+Oka:
%2</translation>
</message>
<message>
- <location line="+4"/>
<source>Documentation successfully registered.</source>
- <translation>A dokumentáció regisztrálása sikeresen megtörtént.</translation>
+ <translation type="obsolete">A dokumentáció regisztrálása sikerült.</translation>
</message>
<message>
- <location line="+11"/>
<source>Could not unregister documentation file
%1
Reason:
%2</source>
- <translation>Nem sikerült regisztrálni a dokumentációs fájlt
+ <translation type="obsolete">A dokumentációs fájl eltávolítása sikertelen
%1
-Ok:
+Oka:
%2</translation>
</message>
<message>
- <location line="-3"/>
<source>Documentation successfully unregistered.</source>
- <translation>Dokumentáció regisztrációjának megszűntetése sikeresen megtörtént.</translation>
+ <translation type="obsolete">A dokumentáció eltávolítása sikerült.</translation>
</message>
<message>
- <location line="+40"/>
<source>Cannot load sqlite database driver!</source>
- <translation>Nem lehet betölteni az sqlite adatbázis vezérlőt!</translation>
+ <translation type="obsolete">Az sqlite adatbázisdriver nem tölthető be!</translation>
</message>
<message>
- <location line="+9"/>
<source>The specified collection file could not be read!</source>
- <translation>A meghatározott gyűjtemény fájlt nem lehet olvasni!</translation>
+ <translation type="obsolete">A megadott gyűjtemény nem olvasható!</translation>
+ </message>
+ <message>
+ <source>Bookmark</source>
+ <translation type="obsolete">Könyvjelző</translation>
</message>
</context>
<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+165"/>
<source>Debugging Remote Control</source>
- <translation>Debuggolás Távoli Vezérlő</translation>
+ <translation>Hibakövetés távoli vezérlése</translation>
</message>
<message>
<location line="+1"/>
<source>Received Command: %1 %2</source>
- <translation>Elfogadott parancs: %1 %2</translation>
+ <translation>A kapott parancs: %1 %2</translation>
</message>
</context>
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+196"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+210"/>
<source>&amp;Copy</source>
<translation>&amp;Másolás</translation>
</message>
@@ -1044,40 +1187,44 @@ Ok:
<message>
<location line="+4"/>
<source>Open Link in New Tab</source>
- <translation>Link megnyitása új lapon</translation>
+ <translation>Link megnyitása új fülön</translation>
</message>
<message>
<location line="+8"/>
<source>Select All</source>
- <translation>Az összes kiválasztása</translation>
+ <translation>Mindent kijelöl</translation>
+ </message>
+ <message>
+ <source>Open Link</source>
+ <translation type="obsolete">Link megnyitása</translation>
</message>
</context>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+53"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
- <translation>Topik választása a következőhöz: &lt;b&gt;%1&lt;/b&gt;:</translation>
+ <translation>Téma választása ehhez: &lt;b&gt;%1&lt;/b&gt;:</translation>
</message>
<message>
<location filename="../tools/assistant/tools/assistant/topicchooser.ui"/>
<source>Choose Topic</source>
- <translation>Topik választása</translation>
+ <translation>Téma választása </translation>
</message>
<message>
<location/>
<source>&amp;Topics</source>
- <translation>&amp;Topikok</translation>
+ <translation>&amp;Témák</translation>
</message>
<message>
<location/>
<source>&amp;Display</source>
- <translation>&amp;Kijelzés</translation>
+ <translation>Meg&amp;jelenítés</translation>
</message>
<message>
<location/>
<source>&amp;Close</source>
- <translation>&amp;Bezárás</translation>
+ <translation>Be&amp;zárás</translation>
</message>
</context>
</TS>
diff --git a/translations/assistant_ru.ts b/translations/assistant_ru.ts
index ade4c85..5244483 100644
--- a/translations/assistant_ru.ts
+++ b/translations/assistant_ru.ts
@@ -4,7 +4,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+117"/>
<source>&amp;Close</source>
<translation>&amp;Закрыть</translation>
</message>
@@ -12,7 +12,7 @@
<context>
<name>AboutLabel</name>
<message>
- <location line="-14"/>
+ <location line="-15"/>
<source>Warning</source>
<translation>Предупреждение</translation>
</message>
@@ -24,12 +24,81 @@
</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+0"/>
<source>OK</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
+ <name>Assistant</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+177"/>
+ <source>Error registering documentation file &apos;%1&apos;: %2</source>
+ <translation>Ошибка регистрации файла документации &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Error: %1</source>
+ <translation>Ошибка: %1</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Could not register documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Не удалось зарегистрировать файл документации
+%1
+
+Причина:
+%2</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Documentation successfully registered.</source>
+ <translation>Документация успешно зарегистрирована.</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Could not unregister documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Не удалось дерегистрировать файл документации
+%1
+
+Причина:
+%2</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Documentation successfully unregistered.</source>
+ <translation>Документация успешно дерегистрирована.</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Error reading collection file &apos;%1&apos;: %2.</source>
+ <translation type="unfinished">Ошибка чтения файла коллекции справки &apos;%1&apos;: %2.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Error creating collection file &apos;%1&apos;: %2.</source>
+ <translation type="unfinished">Ошибка создания файла коллекции справки &apos;%1&apos;: %2.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Error reading collection file &apos;%1&apos;: %2</source>
+ <translation type="unfinished">Ошибка чтения файла коллекции справки &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Cannot load sqlite database driver!</source>
+ <translation>Не удалось загрузить драйвер баз данных sqlite!</translation>
+ </message>
+</context>
+<context>
<name>BookmarkDialog</name>
<message>
<location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
@@ -56,35 +125,11 @@
<source>New Folder</source>
<translation>Новая папка</translation>
</message>
- <message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+187"/>
- <location line="+18"/>
- <location line="+39"/>
- <location line="+18"/>
- <location line="+33"/>
- <source>Bookmarks</source>
- <translation>Закладки</translation>
- </message>
- <message>
- <location line="-64"/>
- <source>Delete Folder</source>
- <translation>Удалить папку</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Rename Folder</source>
- <translation>Переименовать папку</translation>
- </message>
</context>
<context>
<name>BookmarkManager</name>
<message>
- <location line="+452"/>
- <source>Bookmarks</source>
- <translation>Закладки</translation>
- </message>
- <message>
- <location line="+37"/>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+216"/>
<source>Remove</source>
<translation>Удалить</translation>
</message>
@@ -94,16 +139,27 @@
<translation>Удаление папки приведёт к удалению её содержимого.&lt;br&gt;Желаете продолжить?</translation>
</message>
<message>
- <location line="+143"/>
- <location line="+9"/>
- <source>New Folder</source>
- <translation>Новая папка</translation>
+ <location line="+150"/>
+ <source>Add Bookmark...</source>
+ <translation>Добавить закладку...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+D</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-217"/>
+ <source>Untitled</source>
+ <translation>Неозаглавлено</translation>
</message>
-</context>
-<context>
- <name>BookmarkWidget</name>
<message>
- <location line="-474"/>
+ <location line="+213"/>
+ <source>Manage Bookmarks...</source>
+ <translation>Управление закладками...</translation>
+ </message>
+ <message>
+ <location line="+72"/>
<source>Delete Folder</source>
<translation>Удалить папку</translation>
</message>
@@ -123,7 +179,7 @@
<translation>Открыть закладку в новой вкладке</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Delete Bookmark</source>
<translation>Удалить закладку</translation>
</message>
@@ -132,26 +188,11 @@
<source>Rename Bookmark</source>
<translation>Переименовать закладку</translation>
</message>
- <message>
- <location line="+38"/>
- <source>Filter:</source>
- <translation>Фильтр:</translation>
- </message>
- <message>
- <location line="+24"/>
- <source>Add</source>
- <translation>Добавить</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>Remove</source>
- <translation>Удалить</translation>
- </message>
</context>
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+239"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+121"/>
<source>Add new page</source>
<translation>Открыть новую страницу</translation>
</message>
@@ -161,18 +202,18 @@
<translation>Закрыть текущую страницу</translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+287"/>
<source>Print Document</source>
<translation>Печать документа</translation>
</message>
<message>
- <location line="+130"/>
+ <location line="+126"/>
<location line="+2"/>
<source>unknown</source>
<translation>безымянная вкладка</translation>
</message>
<message>
- <location line="+93"/>
+ <location line="+101"/>
<source>Add New Page</source>
<translation>Открыть новую страницу</translation>
</message>
@@ -192,15 +233,78 @@
<translation>Добавить закладку для этой страницы...</translation>
</message>
<message>
- <location line="+248"/>
+ <location line="+264"/>
<source>Search</source>
<translation>Поиск</translation>
</message>
</context>
<context>
+ <name>CmdLineParser</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+137"/>
+ <source>Unknown option: %1</source>
+ <translation>Неизвестный параметр: %1</translation>
+ </message>
+ <message>
+ <location line="+87"/>
+ <source>Unknown widget: %1</source>
+ <translation>Неизвестный виджет: %1</translation>
+ </message>
+ <message>
+ <location line="-54"/>
+ <source>The collection file &apos;%1&apos; does not exist.</source>
+ <translation type="unfinished">Файл коллекции справки &apos;%1&apos; не существует.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Missing collection file.</source>
+ <translation type="unfinished">Отсутствует файл коллекции справки.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Invalid URL &apos;%1&apos;.</source>
+ <translation>Некорректный URL &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Missing URL.</source>
+ <translation>Отсутствует URL.</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Missing widget.</source>
+ <translation>Отсутствует виджет.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>The Qt help file &apos;%1&apos; does not exist.</source>
+ <translation>Файл справки Qt &apos;%1&apos; не существует.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Missing help file.</source>
+ <translation>Отсутствует файл справки.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Missing filter argument.</source>
+ <translation>Отсутствует параметр фильтра.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Error</source>
+ <translation>Ошибка</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Notice</source>
+ <translation>Замечание</translation>
+ </message>
+</context>
+<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+158"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+173"/>
<source>Open Link</source>
<translation>Открыть ссылку</translation>
</message>
@@ -224,34 +328,6 @@
</message>
</context>
<context>
- <name>FindWidget</name>
- <message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-931"/>
- <source>Previous</source>
- <translation>Предыдущее</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Next</source>
- <translation>Следующее</translation>
- </message>
- <message>
- <location line="+4"/>
- <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>
-</context>
-<context>
<name>FontPanel</name>
<message>
<location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
@@ -282,52 +358,25 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+283"/>
- <source>Open Link in New Tab</source>
- <translation>Открыть ссылку в новой вкладке</translation>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+58"/>
+ <source>&lt;title&gt;about:blank&lt;/title&gt;</source>
+ <translation></translation>
</message>
<message>
- <location line="+147"/>
+ <location line="+6"/>
<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="+61"/>
- <source>Help</source>
- <translation>Справка</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Unable to launch external application.
-</source>
- <translation>Невозможно запустить внешнее приложение.
-</translation>
- </message>
- <message>
- <location line="+0"/>
- <source>OK</source>
- <translation>Закрыть</translation>
- </message>
- <message>
- <location line="+63"/>
- <source>Copy &amp;Link Location</source>
- <translation>Копировать &amp;адрес ссылки</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Open Link in New Tab Ctrl+LMB</source>
- <translation>Открыть ссылку в новой вкладке Ctrl+LMB</translation>
- </message>
</context>
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+68"/>
<source>&amp;Look for:</source>
<translation>&amp;Искать:</translation>
</message>
<message>
- <location line="+72"/>
+ <location line="+74"/>
<source>Open Link</source>
<translation>Открыть ссылку</translation>
</message>
@@ -341,29 +390,29 @@
<name>InstallDialog</name>
<message>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+76"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+78"/>
<source>Install Documentation</source>
<translation>Установка документации</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+30"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+33"/>
<source>Downloading documentation info...</source>
<translation>Загрузка информации о документации...</translation>
</message>
<message>
- <location line="+48"/>
+ <location line="+51"/>
<source>Download canceled.</source>
<translation>Загрузка отменена.</translation>
</message>
<message>
- <location line="+26"/>
- <location line="+78"/>
+ <location line="+28"/>
+ <location line="+79"/>
<location line="+27"/>
<source>Done.</source>
<translation>Готово.</translation>
</message>
<message>
- <location line="-90"/>
+ <location line="-91"/>
<source>The file %1 already exists. Do you want to overwrite it?</source>
<translation>Файл %1 уже существует. Желаете перезаписать его?</translation>
</message>
@@ -378,14 +427,14 @@
<translation>Загрузка %1...</translation>
</message>
<message>
- <location line="+19"/>
+ <location line="+20"/>
<location line="+42"/>
- <location line="+38"/>
+ <location line="+40"/>
<source>Download failed: %1.</source>
<translation>Загрузка не удалась: %1.</translation>
</message>
<message>
- <location line="-70"/>
+ <location line="-72"/>
<source>Documentation info file is corrupt!</source>
<translation>Файл информации о документации повреждён!</translation>
</message>
@@ -400,7 +449,7 @@
<translation>Установка документации %1...</translation>
</message>
<message>
- <location line="+22"/>
+ <location line="+23"/>
<source>Error while installing documentation:
%1</source>
<translation>При установке документации возникла ошибка:
@@ -440,48 +489,42 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+110"/>
- <location line="+383"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+123"/>
+ <location line="+369"/>
<source>Index</source>
<translation>Указатель</translation>
</message>
<message>
- <location line="-377"/>
- <location line="+375"/>
+ <location line="-363"/>
+ <location line="+361"/>
<source>Contents</source>
<translation>Содержание</translation>
</message>
<message>
- <location line="-370"/>
- <location line="+374"/>
+ <location line="-354"/>
+ <location line="+358"/>
<source>Bookmarks</source>
<translation>Закладки</translation>
</message>
<message>
- <location line="-362"/>
- <location line="+207"/>
- <location line="+514"/>
+ <location line="-336"/>
+ <location line="+680"/>
+ <location line="+284"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-546"/>
- <location line="+5"/>
- <source>Unfiltered</source>
- <translation>Без фильтрации</translation>
- </message>
- <message>
- <location line="+21"/>
+ <location line="-772"/>
<source>Looking for Qt Documentation...</source>
<translation>Поиск документации Qt...</translation>
</message>
<message>
- <location line="+84"/>
+ <location line="+60"/>
<source>&amp;File</source>
<translation>&amp;Файл</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+7"/>
<source>Page Set&amp;up...</source>
<translation>Параметры &amp;страницы...</translation>
</message>
@@ -496,22 +539,27 @@
<translation>&amp;Печать...</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="-10"/>
<source>New &amp;Tab</source>
<translation>Новая &amp;вкладка</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+17"/>
<source>&amp;Close Tab</source>
<translation>&amp;Закрыть вкладку</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+5"/>
<source>&amp;Quit</source>
<translation>В&amp;ыход</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
+ <source>CTRL+Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+5"/>
<source>&amp;Edit</source>
<translation>&amp;Правка</translation>
</message>
@@ -568,22 +616,22 @@
<message>
<location line="+4"/>
<source>Ctrl+0</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+5"/>
<source>ALT+C</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+2"/>
<source>ALT+I</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+2"/>
<source>ALT+O</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
@@ -593,7 +641,7 @@
<message>
<location line="+1"/>
<source>ALT+S</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+2"/>
@@ -608,7 +656,7 @@
<message>
<location line="+1"/>
<source>ALT+Home</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+3"/>
@@ -638,7 +686,7 @@
<message>
<location line="+1"/>
<source>Ctrl+Alt+Right</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+3"/>
@@ -648,25 +696,20 @@
<message>
<location line="+1"/>
<source>Ctrl+Alt+Left</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+4"/>
<source>&amp;Bookmarks</source>
<translation>&amp;Закладки</translation>
</message>
<message>
- <location line="+1"/>
- <source>Add Bookmark...</source>
- <translation>Добавить закладку...</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>CTRL+D</source>
- <translation type="unfinished"></translation>
+ <location line="+592"/>
+ <source>Could not register file &apos;%1&apos;: %2</source>
+ <translation>Не удалось зарегистрировать файл &apos;%1&apos;: %2</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="-590"/>
<source>&amp;Help</source>
<translation>&amp;Справка</translation>
</message>
@@ -676,7 +719,7 @@
<translation>О программе...</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+21"/>
<source>Navigation Toolbar</source>
<translation>Панель навигации</translation>
</message>
@@ -698,15 +741,15 @@
<message>
<location line="+1"/>
<source>Ctrl+M</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
- <location line="+50"/>
+ <location line="+43"/>
<source>Toolbars</source>
<translation>Панели инструментов</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+16"/>
<source>Filter Toolbar</source>
<translation>Панель фильтров</translation>
</message>
@@ -716,7 +759,7 @@
<translation>Отфильтровано по:</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+26"/>
<source>Address Toolbar</source>
<translation>Панель адреса</translation>
</message>
@@ -726,17 +769,17 @@
<translation>Адрес:</translation>
</message>
<message>
- <location line="+114"/>
+ <location line="+112"/>
<source>Could not find the associated content item.</source>
<translation>Не удалось найти элемент, связанный с содержанием.</translation>
</message>
<message>
- <location line="+71"/>
+ <location line="+60"/>
<source>About %1</source>
<translation>О %1</translation>
</message>
<message>
- <location line="+114"/>
+ <location line="+175"/>
<source>Updating search index</source>
<translation>Обновление поискового индекса</translation>
</message>
@@ -744,18 +787,18 @@
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+259"/>
- <location line="+43"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+252"/>
+ <location line="+44"/>
<source>Add Documentation</source>
<translation>Добавить документацию</translation>
</message>
<message>
- <location line="-43"/>
+ <location line="-44"/>
<source>Qt Compressed Help Files (*.qch)</source>
<translation>Сжатые файлы справки Qt (*.qch)</translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+30"/>
<source>The namespace %1 is already registered!</source>
<translation>Пространство имён %1 уже зарегистрировано!</translation>
</message>
@@ -765,7 +808,7 @@
<translation>Указанный файл не является корректным файлом справки Qt!</translation>
</message>
<message>
- <location line="+23"/>
+ <location line="+24"/>
<source>Remove Documentation</source>
<translation>Удалить документацию</translation>
</message>
@@ -785,7 +828,7 @@
<translation>Удалить</translation>
</message>
<message>
- <location line="+88"/>
+ <location line="+83"/>
<source>Use custom settings</source>
<translation>Использовать индивидуальные настройки</translation>
</message>
@@ -909,120 +952,9 @@
</message>
</context>
<context>
- <name>QObject</name>
- <message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
- <source>The specified collection file does not exist!</source>
- <translation type="unfinished">Указанный файл набора отсутствует!</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Missing collection file!</source>
- <translation type="unfinished">Отсутствует файл набора!</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>Invalid URL!</source>
- <translation>Некорректный URL!</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Missing URL!</source>
- <translation>Отсутствует URL!</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>Отсутствует параметр фильтра!</translation>
- </message>
- <message>
- <location line="+12"/>
- <source>Unknown option: %1</source>
- <translation>Неизвестный параметр: %1</translation>
- </message>
- <message>
- <location line="+30"/>
- <location line="+2"/>
- <source>Qt Assistant</source>
- <translation>Qt Assistant</translation>
- </message>
- <message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+228"/>
- <source>Could not register documentation file
-%1
-
-Reason:
-%2</source>
- <translation>Не удалось зарегистрировать файл документации
-%1
-
-Причина:
-%2</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Documentation successfully registered.</source>
- <translation>Документация успешно зарегистрирована.</translation>
- </message>
- <message>
- <location line="+8"/>
- <source>Documentation successfully unregistered.</source>
- <translation>Документация успешно дерегистрирована.</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Could not unregister documentation file
-%1
-
-Reason:
-%2</source>
- <translation>Не удалось дерегистрировать файл документации
-%1
-
-Причина:
-%2</translation>
- </message>
- <message>
- <location line="+37"/>
- <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 type="unfinished">Не удалось прочитать указанный файл набора!</translation>
- </message>
-</context>
-<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+165"/>
<source>Debugging Remote Control</source>
<translation>Отладочное удалённое управление</translation>
</message>
@@ -1035,7 +967,7 @@ Reason:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+196"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+210"/>
<source>&amp;Copy</source>
<translation>&amp;Копировать</translation>
</message>
@@ -1058,7 +990,7 @@ Reason:
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+53"/>
<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/designer_hu.ts b/translations/designer_hu.ts
index c2960bc..6375cde 100644
--- a/translations/designer_hu.ts
+++ b/translations/designer_hu.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="hu">
+<TS version="2.0" language="hu_HU">
<context>
<name>AbstractFindWidget</name>
<message>
@@ -16,33 +16,33 @@
<message>
<location line="+24"/>
<source>&amp;Case sensitive</source>
- <translation>&amp;Kis ér nagybetű érzékeny</translation>
+ <translation>Kis/&amp;nagybetű érzékeny</translation>
</message>
<message>
<location line="+8"/>
<source>Whole &amp;words</source>
- <translation>Egész &amp;szavakat</translation>
+ <translation>&amp;Teljes szó</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;Keresés tördelve</translation>
+ <translation>&lt;img src=&quot;:/trolltech/shared/images/wrap.png&quot;&gt;&amp;nbsp;A keresés befejeződött</translation>
</message>
</context>
<context>
<name>AddLinkDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui" line="+5"/>
+ <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui"/>
<source>Insert Link</source>
<translation>Link beszúrása</translation>
</message>
<message>
- <location line="+14"/>
+ <location/>
<source>Title:</source>
<translation>Cím:</translation>
</message>
<message>
- <location line="+17"/>
+ <location/>
<source>URL:</source>
<translation>URL:</translation>
</message>
@@ -52,7 +52,7 @@
<message>
<location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
<source>Additional Fonts</source>
- <translation>További betűl</translation>
+ <translation>További betűtípusok</translation>
</message>
</context>
<context>
@@ -60,37 +60,37 @@
<message>
<location line="-267"/>
<source>&apos;%1&apos; is not a file.</source>
- <translation>%1 nem egy fájl.</translation>
+ <translation>&apos;%1&apos; nem egy fájl.</translation>
</message>
<message>
<location line="+4"/>
<source>The font file &apos;%1&apos; does not have read permissions.</source>
- <translation>&apos;%1&apos; betű fájlnak nincsen olvasási engedélye.</translation>
+ <translation>A(z) &apos;%1&apos; font fájlon nincs olvasási jog.</translation>
</message>
<message>
<location line="+8"/>
<source>The font file &apos;%1&apos; is already loaded.</source>
- <translation>&apos;%1&apos; font fájl már be van töltve.</translation>
+ <translation>A(z) &apos;%1&apos; betűtípus már be van töltve.</translation>
</message>
<message>
<location line="+7"/>
<source>The font file &apos;%1&apos; could not be loaded.</source>
- <translation>&apos;%1&apos; font fájlt nem sikerült betölteni.</translation>
+ <translation>A(z) &apos;%1&apos; betűtípus nem tölthető be.</translation>
</message>
<message>
<location line="+17"/>
<source>&apos;%1&apos; is not a valid font id.</source>
- <translation>&apos;%1&apos; nem egy érvényes betű azonosító.</translation>
+ <translation>&apos;%1&apos; nem egy érvényes betűtípus azonosító.</translation>
</message>
<message>
<location line="+11"/>
<source>There is no loaded font matching the id &apos;%1&apos;.</source>
- <translation>Nincsen &apos;%1&apos; azonosítóval megegyező betöltött betű.</translation>
+ <translation>Nincs &apos;%1&apos; azonosítójú betűtípus betöltve.</translation>
</message>
<message>
<location line="+15"/>
<source>The font &apos;%1&apos; (%2) could not be unloaded.</source>
- <translation>&apos;%1&apos; betűt (%2) nem lehetett kirakni.</translation>
+ <translation>A(z) &apos;%1&apos; (%2) betűtípus nem távolítható el.</translation>
</message>
</context>
<context>
@@ -98,65 +98,65 @@
<message>
<location line="+26"/>
<source>Fonts</source>
- <translation>Betűk</translation>
+ <translation>Betűtípusok</translation>
</message>
<message>
<location line="+58"/>
<source>Add font files</source>
- <translation>Betű fájlok hozzáadása</translation>
+ <translation>Betűtípus fájl hozzáadása</translation>
</message>
<message>
<location line="+5"/>
<source>Remove current font file</source>
- <translation>Aktuális betű fájl eltávolítása</translation>
+ <translation>A jelenlegi betűtípus fájl eltávolítása</translation>
</message>
<message>
<location line="+4"/>
<source>Remove all font files</source>
- <translation>Az összes betű fájl eltávolítása</translation>
+ <translation>Minden betűtłpus fájl eltávolítása</translation>
</message>
<message>
<location line="+19"/>
<source>Add Font Files</source>
- <translation>Betű fájlok hozzáadása</translation>
+ <translation>Betűtípus fájl hozzáadása</translation>
</message>
<message>
<location line="+1"/>
<source>Font files (*.ttf)</source>
- <translation>Betű fájlok (*.ttf)</translation>
+ <translation>Betűtípus fájlok (*.ttf)</translation>
</message>
<message>
<location line="+13"/>
<source>Error Adding Fonts</source>
- <translation>Hiba történt a betűk hozzáadásakor</translation>
+ <translation>Hiba a betűtípus fájlok hozzáadásakor</translation>
</message>
<message>
<location line="+24"/>
<source>Error Removing Fonts</source>
- <translation>Hiba történt a betűk eltávolításakor</translation>
+ <translation>Hiba a betűtípus fájlok eltávolításakor</translation>
</message>
<message>
<location line="+22"/>
<source>Remove Fonts</source>
- <translation>Betűk eltávolítása</translation>
+ <translation>Betűtípus fájl eltávolítása</translation>
</message>
<message>
<location line="+0"/>
<source>Would you like to remove all fonts?</source>
- <translation>El szeretné távolítani az összes betűt?</translation>
+ <translation>Minden betűtípust eltávolít?</translation>
</message>
</context>
<context>
<name>AppearanceOptionsWidget</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui" line="+14"/>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui"/>
<source>Form</source>
<translation></translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>User Interface Mode</source>
- <translation>Felhasználói interfész mód</translation>
+ <translation>Felhasználói felület mód</translation>
</message>
</context>
<context>
@@ -164,17 +164,17 @@
<message>
<location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
<source>Unable to send request: Assistant is not responding.</source>
- <translation>Nem lehet elküldeni a kérést, az Assistant nem válaszol.</translation>
+ <translation>A kérés elküldése nem sikerült: az Assistant nem válaszol.</translation>
</message>
<message>
<location line="+39"/>
<source>The binary &apos;%1&apos; does not exist.</source>
- <translation>&apos;%1&apos; bináris nem létezik.</translation>
+ <translation>A(z) &apos;%1&apos; bináris nem létezik.</translation>
</message>
<message>
<location line="+9"/>
<source>Unable to launch assistant (%1).</source>
- <translation>Nem lehet elindítani a(z) %1 assistant.</translation>
+ <translation>Az Assistant (%1) elindítása sikertelen.</translation>
</message>
</context>
<context>
@@ -182,12 +182,12 @@
<message>
<location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+52"/>
<source>No brush</source>
- <translation>Nincs kefe</translation>
+ <translation>Nincs ecset</translation>
</message>
<message>
<location line="+1"/>
<source>Solid</source>
- <translation>Szolid</translation>
+ <translation>Lágy</translation>
</message>
<message>
<location line="+1"/>
@@ -227,12 +227,12 @@
<message>
<location line="+1"/>
<source>Horizontal</source>
- <translation>Horizontális</translation>
+ <translation>Vízszintes</translation>
</message>
<message>
<location line="+1"/>
<source>Vertical</source>
- <translation>Vertikális</translation>
+ <translation>Függőleges</translation>
</message>
<message>
<location line="+1"/>
@@ -242,20 +242,20 @@
<message>
<location line="+1"/>
<source>Backward diagonal</source>
- <translation>Visszafele átlós</translation>
+ <translation>Fordított átlós</translation>
</message>
<message>
<location line="+1"/>
<source>Forward diagonal</source>
- <translation>Előre átlós</translation>
+ <translation>Átlós</translation>
</message>
<message>
<location line="+1"/>
<source>Crossing diagonal</source>
- <translation>Kereszt átlós</translation>
+ <translation>Keresztátlós</translation>
</message>
<message>
- <location line="+83"/>
+ <location line="+93"/>
<source>Style</source>
<translation>Stílus</translation>
</message>
@@ -267,7 +267,7 @@
<message>
<location line="+105"/>
<source>[%1, %2]</source>
- <translation>[%1, %2]</translation>
+ <translation></translation>
</message>
</context>
<context>
@@ -276,66 +276,66 @@
<location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
<location line="+258"/>
<source>Change signal</source>
- <translation>Jel változtatás</translation>
+ <translation>Jelzés megváltoztatása</translation>
</message>
<message>
<location line="-256"/>
<location line="+268"/>
<source>Change slot</source>
- <translation>Szlot változtatás</translation>
+ <translation>Slot megváltoztatása</translation>
</message>
<message>
<location line="-220"/>
<source>Change signal-slot connection</source>
- <translation>Jel szlot kapcsolat változtatása</translation>
+ <translation>Jelzés-slot kapcsolat megváltoztatása</translation>
</message>
<message>
<location line="+234"/>
<source>Change sender</source>
- <translation>Küldő változtatás</translation>
+ <translation>Küldő megváltoztatása</translation>
</message>
<message>
<location line="+18"/>
<source>Change receiver</source>
- <translation>Fogadó változtatás</translation>
+ <translation>Fogadó megváltoztatása</translation>
</message>
<message>
<location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+221"/>
<source>Create button group</source>
- <translation>Gomb csoport létrehozása</translation>
+ <translation>Gombcsoport létrehozása</translation>
</message>
<message>
<location line="+27"/>
<source>Break button group</source>
- <translation>Gomb csoport törése</translation>
+ <translation>Gombcsoport széttörése</translation>
</message>
<message>
<location line="+9"/>
<source>Break button group &apos;%1&apos;</source>
- <translation>&apos;%1&apos; gomb csoport törése</translation>
+ <translation>A(z) &apos;%1&apos; gombcsoport széttörése</translation>
</message>
<message>
<location line="+17"/>
<source>Add buttons to group</source>
- <translation>Gomb hozzáadása a csoporthoz</translation>
+ <translation>Gomb(ok) hozzáadása a csoporthoz</translation>
</message>
<message>
<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>&apos;%1&apos; hozzáadása &apos;%2&apos;-höz</translation>
+ <translation>&apos;%1&apos; hozzáadása ehhez: &apos;%2&apos;</translation>
</message>
<message>
<location line="+14"/>
<source>Remove buttons from group</source>
- <translation>Gomb eltávolítása a csoportból</translation>
+ <translation>Gomb(ok) eltávolítása a csoportból</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>&apos;%1&apos; eltávolítása &apos;%2&apos;-ból</translation>
+ <translation>&apos;%1&apos; eltávolítása innen: &apos;%2&apos;</translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
@@ -345,7 +345,7 @@
<message>
<location line="+54"/>
<source>Adjust connection</source>
- <translation>Kapcsolat beállítása</translation>
+ <translation>Kapcsolat módosítása</translation>
</message>
<message>
<location line="+19"/>
@@ -355,18 +355,18 @@
<message>
<location line="+58"/>
<source>Change source</source>
- <translation>Forrás változtatása</translation>
+ <translation>Forrás megváltoztatása</translation>
</message>
<message>
<location line="+2"/>
<source>Change target</source>
- <translation>Cél változtatása</translation>
+ <translation>Cél megváltoztatása</translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+349"/>
<source>Morph %1/&apos;%2&apos; into %3</source>
<extracomment>MorphWidgetCommand description</extracomment>
- <translation>%1/&apos;%2&apos; alakváltoztatása %3-re</translation>
+ <translation>%1/&apos;%2&apos; átalakítása erre: %3</translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
@@ -381,12 +381,12 @@
<message>
<location line="+34"/>
<source>Raise &apos;%1&apos;</source>
- <translation>&apos;%1&apos; növelése</translation>
+ <translation>&apos;%1&apos; előrehozása</translation>
</message>
<message>
<location line="+33"/>
<source>Lower &apos;%1&apos;</source>
- <translation>Alsó &apos;%1&apos;</translation>
+ <translation>&apos;%1&apos; hátrébbküldése</translation>
</message>
<message>
<location line="+113"/>
@@ -396,49 +396,49 @@
<message>
<location line="+119"/>
<source>Reparent &apos;%1&apos;</source>
- <translation>&apos;%1&apos; újra szülősítése</translation>
+ <translation type="unfinished">&apos;%1&apos; szülőjének megváltoztatása</translation>
</message>
<message>
<location line="+53"/>
<source>Promote to custom widget</source>
- <translation>Egyéni widget elősegítése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+42"/>
<source>Demote from custom widget</source>
- <translation>Egyéni widget lefokozása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+79"/>
<source>Lay out using grid</source>
- <translation>Tervraj rácsok használatával</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lay out vertically</source>
- <translation>Tervrajz vertikálisan</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lay out horizontally</source>
- <translation>Tervrajz horizontálisan</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+41"/>
<source>Break layout</source>
- <translation>Tervrajz törése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+105"/>
<source>Simplify Grid Layout</source>
- <translation>Egyszerűsített rács tervrajz</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+135"/>
<location line="+235"/>
<location line="+78"/>
<source>Move Page</source>
- <translation>Lap mozgatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-279"/>
@@ -446,18 +446,18 @@
<location line="+188"/>
<location line="+666"/>
<source>Delete Page</source>
- <translation>Lap törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-939"/>
<location line="+123"/>
<source>Page</source>
- <translation>Lap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+860"/>
<source>page</source>
- <translation>lap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-978"/>
@@ -465,251 +465,249 @@
<location line="+186"/>
<location line="+667"/>
<source>Insert Page</source>
- <translation>Lap beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-647"/>
<source>Change Tab order</source>
- <translation>Tab sorrend változtatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+28"/>
<source>Create Menu Bar</source>
- <translation>Menü sáv</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+44"/>
<source>Delete Menu Bar</source>
- <translation>Menü sáv törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+47"/>
<source>Create Status Bar</source>
- <translation>Státusz sáv létrehozása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+42"/>
<source>Delete Status Bar</source>
- <translation>Státusz sáv törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+45"/>
<source>Add Tool Bar</source>
- <translation>Eszköz sáv hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+59"/>
<source>Add Dock Window</source>
- <translation>Dokk ablak hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+53"/>
<source>Adjust Size of &apos;%1&apos;</source>
- <translation>&apos;%1&apos; méretének igazítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+57"/>
<source>Change Form Layout Item Geometry</source>
- <translation>Űrlap tervrajz elem geometriájának megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+95"/>
<source>Change Layout Item Geometry</source>
- <translation>Tervrajz elem geometriájának megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+138"/>
<source>Delete Subwindow</source>
- <translation>Alablak törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+44"/>
<source>Insert Subwindow</source>
- <translation>Alablak beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>subwindow</source>
- <translation>alablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Subwindow</source>
- <translation>Alablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+391"/>
<source>Change Table Contents</source>
- <translation>Táblázat tartalom megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+107"/>
<source>Change Tree Contents</source>
- <translation>Fa tartalom megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+74"/>
<location line="+146"/>
<source>Add action</source>
- <translation>Tevékenység hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-120"/>
<location line="+126"/>
<source>Remove action</source>
- <translation>Tevékenység eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+53"/>
<source>Add menu</source>
- <translation>Menü hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Remove menu</source>
- <translation>Menü eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Create submenu</source>
- <translation>Almenü létrehozása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+31"/>
<source>Delete Tool Bar</source>
- <translation>Eszköz sáv törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+154"/>
<source>Change layout of &apos;%1&apos; from %2 to %3</source>
- <translation>&apos;%1&apos; tervrajz megváltoztatása %2-ről %3-ra</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1195"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1194"/>
<source>Set action text</source>
- <translation>Tevékenység szöveg beállítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Insert action</source>
- <translation>Tevékenység beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+89"/>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+907"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+915"/>
<source>Move action</source>
- <translation>Tevékenység mozgatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-424"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-432"/>
<source>Change Title</source>
- <translation>Cím megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Insert Menu</source>
- <translation>Menü beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1213"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1225"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
- <translation>&apos;%2&apos; &apos;%1&apos;-ének megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Changed &apos;%1&apos; of %n objects</source>
- <translation>
- <numerusform>%n objektum %1-ének megváltoztatása</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
- <location line="+76"/>
+ <location line="+84"/>
<source>Reset &apos;%1&apos; of &apos;%2&apos;</source>
- <translation>&apos;%2&apos; &apos;%1&apos;-ének megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Reset &apos;%1&apos; of %n objects</source>
- <translation>
- <numerusform>%n objektum &apos;%1&apos;-ének újraindítása</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
<location line="+89"/>
<source>Add dynamic property &apos;%1&apos; to &apos;%2&apos;</source>
- <translation>&apos;%2&apos; &apos;%1&apos; dinamikus tulajdonságának hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Add dynamic property &apos;%1&apos; to %n objects</source>
- <translation>
- <numerusform>%n objektum&apos; &apos;%1&apos; dinamikus tulajdonságának hozzáadása</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
<location line="+86"/>
<source>Remove dynamic property &apos;%1&apos; from &apos;%2&apos;</source>
- <translation>&apos;%1&apos; dinamikus tulajdonság eltávolítáas &apos;%2&apos;-ből</translation>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Remove dynamic property &apos;%1&apos; from %n objects</source>
- <translation>
- <numerusform>&apos;%1&apos; dinamikus tulajdonság eltávolítása %n objektumból</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
<source>Change script</source>
- <translation>Szkript megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
<source>Change signals/slots</source>
- <translation>Jelek/Szlotok megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConnectDialog</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui" line="+13"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui"/>
<source>Configure Connection</source>
- <translation>Kapcsolat konfigurálása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
- <location line="+40"/>
+ <location/>
<source>GroupBox</source>
- <translation>CsoportDoboz</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-25"/>
- <location line="+40"/>
+ <location/>
<source>Edit...</source>
- <translation>Szerkesztés...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+25"/>
+ <location/>
<source>Show signals and slots inherited from QWidget</source>
- <translation>QWidget-ből örökölt jelek és szlotok megjelenítése</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConnectionDelegate</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+643"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+644"/>
<source>&lt;object&gt;</source>
- <translation>&lt;objekttum&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+18"/>
<source>&lt;signal&gt;</source>
- <translation>&lt;jel&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<source>&lt;slot&gt;</source>
- <translation>&lt;szlot&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -718,109 +716,108 @@
<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>Szabványos (96 x 96)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Greenphone (179 x 185)</source>
<extracomment>Embedded device screen resolution</extracomment>
- <translation>Greenphone (179 x 185)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>High (192 x 192)</source>
<extracomment>Embedded device high definition screen resolution</extracomment>
- <translation>Magasság (192 x 192)</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+449"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+446"/>
<source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <translation type="unfinished"></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>Ez a fájl felső szintű távtartókat tartalmaz.&lt;br&gt; Nem tartalmaznak &lt;b&gt;SEMMIT&lt;/b&gt;, ami el lenne mentve az űrlapba.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Perhaps you forgot to create a layout?</source>
- <translation>Talán elfelejtette létrehozni a tervrajzot?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+173"/>
<source>Invalid UI file: The root element &lt;ui&gt; is missing.</source>
- <translation>Érvénytelen UI fájl. A rendszergazda elem &lt;ui&gt; hiányzik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>An error has occurred while reading the UI file at line %1, column %2: %3</source>
- <translation>Hiba történt az UI fájl olvasás közben %1 sorban, %2 oszlopban: %3</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+26"/>
<source>This file cannot be read because it was created using %1.</source>
- <translation>A fájl nem olvasható, mert %1 használatával hozták létre.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+14"/>
<source>This file was created using Designer from Qt-%1 and cannot be read.</source>
- <translation>A fájlt a(z) %1 Qt Designer-rel hozták létre és nem olvasható.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>The converted file could not be read.</source>
- <translation>A konvertált fájlt nem sikerült olvasni.</translation>
+ <translation type="unfinished"></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>A fájlt a(z) %1 Qt Designer-rel hozták létre és a Qt Designer egy új űrlapra fogja konvertálni.</translation>
+ <translation type="unfinished"></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>A régi űrlap nem lett érintve, de az űrlapot új néven kell majd elmentenie.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>This file was created using Designer from Qt-%1 and could not be read:
%2</source>
- <translation>A fájl a(z) %1 Qt Designer-rel lett létrehozva és nem olvasható:
-%2</translation>
+ <translation type="unfinished"></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>Kérem futtassa a &lt;br&gt;uic3&amp;nbsp;-convert&lt;/b&gt; Qt 4-s ui formára konvertáláshoz.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+31"/>
<source>This file cannot be read because the extra info extension failed to load.</source>
- <translation>Ez a fájl nem olvasható, mert az extra információ kiterjesztést nem sikerült betölteni.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/qsimpleresource.cpp" line="+339"/>
<source>Custom Widgets</source>
- <translation>Egyéni Widgetek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Promoted Widgets</source>
- <translation>Támogatott Widgetek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
<source>Unable to launch %1.</source>
- <translation>Nem lehet elindítani %1-t.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 timed out.</source>
- <translation>%1 időtúllépés.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -828,12 +825,12 @@
<message>
<location line="-513"/>
<source>%1 is not a valid enumeration value of &apos;%2&apos;.</source>
- <translation>%1 nem egy érvényes &apos;%2&apos; felsorolási érték.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>&apos;%1&apos; could not be converted to an enumeration value of type &apos;%2&apos;.</source>
- <translation>&apos;%1&apos; nem konvertálható egy &apos;%2&apos; típusú felsorolási értékre.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -841,7 +838,7 @@
<message>
<location line="+78"/>
<source>&apos;%1&apos; could not be converted to a flag value of type &apos;%2&apos;.</source>
- <translation>&apos;%1&apos; nem konvertálható egy &apos;%2&apos; típusú jelző értékre.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -850,40 +847,40 @@
<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; nem egy szám.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+23"/>
<source>An invalid tag &lt;%1&gt; was encountered.</source>
- <translation>Egy érvénytelen címkét &lt;%1&gt; talált.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DeviceProfileDialog</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui" line="+20"/>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui"/>
<source>&amp;Family</source>
- <translation>&amp;Család</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>&amp;Point Size</source>
- <translation>&amp;Pont méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Style</source>
- <translation>Stílus</translation>
+ <translation type="unfinished">Stílus</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Device DPI</source>
- <translation>Eszköz DPI</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Name</source>
- <translation>Név</translation>
+ <translation type="unfinished">Név</translation>
</message>
</context>
<context>
@@ -891,57 +888,57 @@
<message>
<location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
- <translation>Nem sikerült betölteni a(z) &apos;%1&apos; kép fájlt.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+64"/>
<source>The skin directory &apos;%1&apos; does not contain a configuration file.</source>
- <translation>A(z) &apos;%1&apos; szkin könyvtár nem tartalmaz egy konfigurációs fájlt sem.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>The skin configuration file &apos;%1&apos; could not be opened.</source>
- <translation>A(z) &apos;%1&apos; szkin konfigurációs fájlt nem sikerült megnyitni.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The skin configuration file &apos;%1&apos; could not be read: %2</source>
- <translation>A(z) &apos;%1&apos; szkin konfigurációs fájlt nem sikerült olvasni: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+70"/>
<source>Syntax error: %1</source>
- <translation>Szintakszis hiba: %1</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>The skin &quot;up&quot; image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1&apos; szkin &apos;fel&apos; kép fájl nem létezik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<source>The skin &quot;down&quot; image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1&apos; szkin &apos;le&apos; kép fájl nem létezik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>The skin &quot;closed&quot; image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1&apos; szkin &apos;zárt&apos; kép fájl nem létezik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>The skin cursor image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1&apos; szkin kurzor kép fájl nem létezik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Syntax error in area definition: %1</source>
- <translation>Szintakszis hiba a terület definícióban: %1</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+38"/>
<source>Mismatch in number of areas, expected %1, got %2.</source>
- <translation>Rossz párosítás a területek számában, várt %1, kapot %2.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -950,7 +947,7 @@
<location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+307"/>
<source>&lt;html&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Font&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%1, %2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Style&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Resolution&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4 x %5&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/html&gt;</source>
<extracomment>Format embedded device profile description</extracomment>
- <translation>&lt;html&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Betű&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;Stílus&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;Felbontás&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>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -959,13 +956,13 @@
<location line="+103"/>
<source>Embedded Design</source>
<extracomment>Tab in preferences dialog</extracomment>
- <translation>Tab a beállítások párbeszéd ablakban</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<source>Device Profiles</source>
<extracomment>EmbeddedOptionsControl group box&quot;</extracomment>
- <translation>BeágyazottOpciókVezérlő csoport doboz&quot;</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -973,27 +970,27 @@
<message>
<location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
- <translation>Betű</translation>
+ <translation type="unfinished">Betűtípus</translation>
</message>
<message>
<location line="+11"/>
<source>&amp;Writing system</source>
- <translation>Rendszer &amp;írása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>&amp;Family</source>
- <translation>&amp;Család</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>&amp;Style</source>
- <translation>&amp;Stílus</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>&amp;Point size</source>
- <translation>&amp;Pont méret</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1001,37 +998,37 @@
<message>
<location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
<source>PreferDefault</source>
- <translation>AlapértelmezettPreferálása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>NoAntialias</source>
- <translation>NincsÁtlapolás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>PreferAntialias</source>
- <translation>ÁtlapolásPreferálása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+61"/>
<source>Antialiasing</source>
- <translation>Átlapolás</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+359"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+375"/>
<source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
<extracomment>Parsing layout stretch values</extracomment>
- <translation>Érvénytelen érték kiterjesztés &apos;%1&apos;-re: &apos;%2&apos;</translation>
+ <translation type="unfinished"></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>Érvénytelen minimum méret &apos;%1&apos;-re: &apos;%2&apos;</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1039,144 +1036,142 @@
<message>
<location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
<source>%1 %</source>
- <translation>%1 %</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Preview Zoom</source>
- <translation>Zoom előnézet</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Default Zoom</source>
- <translation>Alapértelmezett zoom</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+29"/>
<source>Forms</source>
<extracomment>Tab in preferences dialog</extracomment>
- <translation>Űrlapok</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<source>Default Grid</source>
- <translation>Alapértelmezett rács</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormLayoutRowDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="+6"/>
+ <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui"/>
<source>Add Form Layout Row</source>
- <translatorcomment>нелепица какая-то</translatorcomment>
- <translation>Űrlap szerkezet sor hozzaadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+11"/>
+ <location/>
<source>&amp;Label text:</source>
- <translation>&amp;Címke szöveg:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+23"/>
+ <location/>
<source>Field &amp;type:</source>
- <translation>Mező &amp;típus:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location/>
<source>&amp;Field name:</source>
- <translation>&amp;Mező név:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>&amp;Buddy:</source>
- <translation>&amp;Haver:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+17"/>
+ <location/>
<source>&amp;Row:</source>
- <translation>&amp;Sor:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+16"/>
+ <location/>
<source>Label &amp;name:</source>
- <translation>Címke &amp;név:</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1701"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1754"/>
<source>Unexpected element &lt;%1&gt;</source>
- <translation>Váratlan elem &lt;%1&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Error while pasting clipboard contents at line %1, column %2: %3</source>
- <translation>Hiba történt a vágólap tartalom beillesztése közben a(z) %1 sorban, %2 oszlopban: %3</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormWindowSettings</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="+54"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui"/>
<source>Form Settings</source>
- <translation>Űrlap beállítások</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+14"/>
+ <location/>
<source>Layout &amp;Default</source>
- <translation>&amp;Alapértelmezett elrendezés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+15"/>
+ <location/>
<source>&amp;Spacing:</source>
- <translation>&amp;Ritkítás:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>&amp;Margin:</source>
- <translation>&amp;Margó:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<source>&amp;Layout Function</source>
- <translation>&amp;Elrendezés függvény
-</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+21"/>
+ <location/>
<source>Ma&amp;rgin:</source>
- <translation>Ma&amp;rgó:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Spa&amp;cing:</source>
- <translation>Rit&amp;kítás:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+117"/>
- <source>&amp;Author</source>
- <translation>&amp;Szerző</translation>
+ <location/>
+ <source>&amp;Pixmap Function</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-41"/>
+ <location/>
<source>&amp;Include Hints</source>
- <translation>Célzások &amp;beleértése</translation>
- </message>
- <message>
- <location line="-53"/>
- <source>&amp;Pixmap Function</source>
- <translation>&amp;Pixmap függvény</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+71"/>
+ <location/>
<source>Grid</source>
- <translation>Rács</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Embedded Design</source>
- <translation>Beágyazott terv</translation>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Author</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1184,7 +1179,7 @@
<message>
<location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+352"/>
<source>All Pixmaps (</source>
- <translation>Az összes Pixmap (</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1193,94 +1188,94 @@
<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 ikon kiválasztásának kikapcsolása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+121"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
- <translation>Fő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>File</source>
- <translation>Fájl</translation>
+ <translation type="unfinished">Fájl</translation>
</message>
<message>
<location line="+1"/>
<source>Edit</source>
- <translation>Szerkesztés</translation>
+ <translation type="unfinished">Szerkesztés</translation>
</message>
<message>
<location line="+1"/>
<source>Tools</source>
- <translation>Eszközök</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Form</source>
- <translation>Űrlap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NewForm</name>
<message>
- <location filename="../tools/designer/src/designer/newform.cpp" line="+79"/>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+78"/>
+ <source>Show this Dialog on Startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>C&amp;reate</source>
- <translation>&amp;Létrehozás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Recent</source>
- <translation>Utóbbi</translation>
+ <translation type="unfinished">Előző</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+3"/>
+ <source>New Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+29"/>
<source>&amp;Close</source>
- <translation>&amp;Bezárás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>&amp;Open...</source>
- <translation>&amp;Megnyitás...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>&amp;Recent Forms</source>
- <translation>&amp;Utóbbi űrlapok</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+64"/>
<source>Read error</source>
- <translation>Olvasási hiba</translation>
- </message>
- <message>
- <location line="-100"/>
- <source>New Form</source>
- <translation>Űj űrlap</translation>
- </message>
- <message>
- <location line="-5"/>
- <source>Show this Dialog on Startup</source>
- <translation>Párbeszédablak megjelenítése betöltéskor</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+128"/>
+ <location line="+23"/>
<source>A temporary form file could not be created in %1.</source>
- <translation>Egy átmeneti űrlap fájlt nem sikerült létrehozni %1-ben.</translation>
+ <translation type="unfinished">Az ideiglenes űrlap fájl nem hozható létre a(z) %1 helyen.</translation>
</message>
<message>
<location line="+6"/>
<source>The temporary form file %1 could not be written.</source>
- <translation>A(z) %1 átmeneti űrlap fájlt nem sikerült írni.</translation>
+ <translation type="unfinished">A(z) %1 ideiglenes űrlap fájl nem írható.</translation>
</message>
</context>
<context>
@@ -1288,22 +1283,22 @@
<message>
<location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+360"/>
<source>Object</source>
- <translation>Objektum</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Class</source>
- <translation>Osztály</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+35"/>
<source>separator</source>
- <translation>Elválasztó</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+98"/>
<source>&lt;noname&gt;</source>
- <translation>&lt;noname&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1311,68 +1306,66 @@
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+158"/>
<source>Change Object Name</source>
- <translation>Objektum nevének megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Object Name</source>
- <translation>Objektum név</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PluginDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/plugindialog.ui" line="+54"/>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
- <translation>Beépülő modul információ</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+26"/>
+ <location/>
<source>1</source>
- <translation>1</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/designer/src/designer/preferencesdialog.ui" line="+20"/>
+ <location filename="../tools/designer/src/designer/preferencesdialog.ui"/>
<source>Preferences</source>
- <translation>Beállítások</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PreviewConfigurationWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="+5"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui"/>
<source>Form</source>
- <translation>Űrlap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Print/Preview Configuration</source>
- <translation>Nyomtatás/Előnézet konfiguráció</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
+ <location/>
<source>Style</source>
- <translation>Stílus</translation>
+ <translation type="unfinished">Stílus</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Style sheet</source>
- <translation>Stíluslap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
- <location line="+7"/>
- <location line="+21"/>
+ <location/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
<message>
- <location line="-12"/>
+ <location/>
<source>Device skin</source>
- <translation>Eszköz szkin</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1381,7 +1374,7 @@
<location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+112"/>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
- <translation>Nincs használva</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1390,7 +1383,7 @@
<location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
<location line="+5"/>
<source>Page</source>
- <translation>Lap</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1398,59 +1391,58 @@
<message>
<location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
<source>Unexpected element &lt;%1&gt;</source>
- <translation>Váratlan elem &lt;%1&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>An error has occurred while reading the UI file at line %1, column %2: %3</source>
- <translation>Hiba történt az UI fájl olvasása közben a(z) %1 sorban, %2 oszlopban: %3</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Invalid UI file: The root element &lt;ui&gt; is missing.</source>
- <translation>Érvénytelen UI fájl. A rendszergazda elem &lt;ui&gt; hiányzik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+119"/>
+ <location line="+104"/>
<source>The creation of a widget of the class &apos;%1&apos; failed.</source>
- <translation>A(z) &apos;%1&apos; osztály egy widget-ének létrehozása nem sikerült.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+296"/>
<source>Attempt to add child that is not of class QWizardPage to QWizard.</source>
- <translation>Gyermek hozzáadásának megkísérelése QWizard-hoz, amely nem egy QWizardPage osztály.</translation>
+ <translation type="unfinished"></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>Egy elrendezés hozzáadásának megprónálás egy &quot;%1&apos; widgethez (%2), melynek már egy %3 típusú nem doboz elrendezése van.
-Ez ellentmondást mutat az ui fájlban.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+144"/>
<source>Empty widget item in %1 &apos;%2&apos;.</source>
- <translation>Üres widget elem %1-ben &apos;%2&apos;.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+680"/>
<source>Flags property are not supported yet.</source>
- <translation>Jelző tulajdonság még nem támogatott.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+81"/>
<source>While applying tab stops: The widget &apos;%1&apos; could not be found.</source>
- <translation>Tab stops alkalmazásakor: A(z) &apos;%1&apos; widget nem található.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+908"/>
<source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
- <translation>Érvénytelen &apos;%1&apos; QButtonGroup hivatkozásra hivatkozik a(z) &apos;%2&apos;.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+511"/>
<source>This version of the uitools library is linked without script support.</source>
- <translation>Az uitools könyvtár ezen verziója szkript támogatás nélkül linkelt.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1458,12 +1450,12 @@ Ez ellentmondást mutat az ui fájlban.</translation>
<message>
<location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
<source>ActiveX control</source>
- <translation>ActiveX vezérlő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>ActiveX control widget</source>
- <translation>ActiveX vezérlő widget</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1471,22 +1463,22 @@ Ez ellentmondást mutat az ui fájlban.</translation>
<message>
<location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
<source>Set Control</source>
- <translation>Vezérlő beállítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Reset Control</source>
- <translation>Vezérlő újraindítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+41"/>
<source>Licensed Control</source>
- <translation>Felhatalmazott vezérlő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>The control requires a design-time license</source>
- <translation>A vezérlő egy tervezés idejű felhatalmazást igényel</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1494,70 +1486,68 @@ Ez ellentmondást mutat az ui fájlban.</translation>
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
<source>%1 is not a promoted class.</source>
- <translation>%1 nem egy támogatott osztály.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+65"/>
<source>The base class %1 is invalid.</source>
- <translation>A(z) %1 alap osztály érvénytelen.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>The class %1 already exists.</source>
- <translation>A(z) %1 osztály már létezik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>Promoted Widgets</source>
- <translation>Támogatott Widget-ek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+126"/>
<source>The class %1 cannot be removed</source>
- <translation>A(z) %1 osztályt nem lehet eltávolítani</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>The class %1 cannot be removed because it is still referenced.</source>
- <translation>A(z) %1 osztályt nem lehet eltávolítani, mert még mindig hivatkozott.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<source>The class %1 cannot be renamed</source>
- <translation>A(z) %1 osztályt nem lehet átnevezni</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>The class %1 cannot be renamed to an empty name.</source>
- <translation>A(z) %1 osztályt nem lehet átnevezni egy üres névűre.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>There is already a class named %1.</source>
- <translation>Már van egy %1 nevű osztály.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+29"/>
<source>Cannot set an empty include file.</source>
- <translatorcomment>перевод близко к тексту - буквальный совсем глаз режет</translatorcomment>
- <translation>Nem lehet beállítani egy üres bennefoglalt fájlt.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
<source>Exception at line %1: %2</source>
- <translation>Kivétel a(z) %1 sorban: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+36"/>
<source>Unknown error</source>
- <translation>Ismeretlen hiba</translation>
+ <translation type="unfinished">Ismeretlen hiba</translation>
</message>
<message>
<location line="+50"/>
<source>An error occurred while running the script for %1: %2
Script: %3</source>
- <translation>Hiba történt a szkript futtása közben %1-re: %2
-Szkript: %3</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1565,332 +1555,326 @@ Szkript: %3</translation>
<message>
<location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
<source>%1 - warning</source>
- <translation>%1 -figyelmeztetés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+96"/>
<source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>This application cannot be used for the Console edition of Qt</source>
- <translation>Ezt alkalmazást nem lehet a Qt konzol szerkesztésére használni</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+128"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+130"/>
<source>Saved %1.</source>
- <translation>Mentve: %1.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+50"/>
+ <location line="+26"/>
+ <source>%1 already exists.
+Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+24"/>
<source>Edit Widgets</source>
- <translation>Widget-ek szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location line="+1"/>
+ <source>&amp;New...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Open...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save &amp;As...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save A&amp;ll</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save As &amp;Template...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <location line="+925"/>
+ <source>&amp;Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-924"/>
+ <source>Save &amp;Image...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Print...</source>
+ <translation type="unfinished">&amp;Nyomtatás...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>&amp;Quit</source>
- <translation>&amp;Bezárás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
+ <source>View &amp;Code...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>&amp;Minimize</source>
- <translation>&amp;Minimalizálás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Bring All to Front</source>
- <translation>Az összes előre hozása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Preferences...</source>
- <translation>Beállítások...</translation>
+ <translation type="unfinished">Beállítások...</translation>
</message>
<message>
- <location line="+298"/>
- <source>Clear &amp;Menu</source>
- <translation>&amp;Menü tisztítása</translation>
+ <location line="+1"/>
+ <source>Additional Fonts...</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-233"/>
+ <location line="+72"/>
+ <source>ALT+CTRL+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
<source>CTRL+SHIFT+S</source>
- <translation>CTRL+SHIFT+S</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+127"/>
<source>CTRL+R</source>
- <translation>CTRL+R</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+18"/>
<source>CTRL+M</source>
- <translation>CTRL+M</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+31"/>
<source>Qt Designer &amp;Help</source>
- <translation>Qt Designer &amp;Súgó</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Current Widget Help</source>
- <translation>Aktuális Widget Súgó</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>What&apos;s New in Qt Designer?</source>
- <translation>Mi az újdonság a Qt Designer-ben?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>About Plugins</source>
- <translation>Beépülő modulokról</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<location line="+601"/>
<source>About Qt Designer</source>
- <translation>Qt Designer-ről</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-595"/>
<source>About Qt</source>
- <translation>Qt-ról</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+121"/>
+ <location line="+38"/>
+ <source>Clear &amp;Menu</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>&amp;Recent Forms</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+77"/>
<location line="+197"/>
<source>Open Form</source>
- <translation>Űrlap megnyitása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-196"/>
<location line="+37"/>
<location line="+160"/>
<source>Designer UI files (*.%1);;All Files (*)</source>
- <translation>Designer UI fájlok (*.%1);;Az összes fájl (*)</translation>
- </message>
- <message>
- <location line="-620"/>
- <source>%1 already exists.
-Do you want to replace it?</source>
- <translation>%1 már létezik.
-Le szeretné cserélni?</translation>
- </message>
- <message>
- <location line="+42"/>
- <source>Additional Fonts...</source>
- <translation>További betűk...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+303"/>
- <source>&amp;Recent Forms</source>
- <translation>&amp;Utóbbi űrlapok</translation>
+ <location line="-160"/>
+ <location line="+248"/>
+ <source>Save Form As</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+202"/>
+ <location line="-161"/>
<source>Designer</source>
- <translation>Designer</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<source>Feature not implemented yet!</source>
- <translation>A tulajdonság még nincs implementálva!</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+59"/>
+ <location line="+15"/>
+ <source>Code generation failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+44"/>
<source>Read error</source>
- <translation>Olvasási hiba</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>%1
Do you want to update the file location or generate a new form?</source>
- <translation>%1
-Szeretné frissíteni a fájl helyét vagy generálni egy új űrlapot?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>&amp;Update</source>
- <translation>&amp;Frissítés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>&amp;New Form</source>
- <translation>&amp;Új űrlap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+77"/>
<location line="+40"/>
<source>Save Form?</source>
- <translation>Menti az űrlapot?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-39"/>
<source>Could not open file</source>
- <translation>Nem sikerült megnyitni a fájlt</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location line="+4"/>
+ <source>The file %1 could not be opened.
+Reason: %2
+Would you like to retry or select a different file?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
<source>Select New File</source>
- <translation>Új fájl kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Could not write file</source>
- <translation>Nem sikerült írni a fájlt</translation>
- </message>
- <message>
- <location line="+201"/>
- <source>&amp;Close Preview</source>
- <translation>Előnézet &amp;bezárása</translation>
- </message>
- <message>
- <location line="-905"/>
- <source>&amp;New...</source>
- <translation>&amp;Új...</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>&amp;Open...</source>
- <translation>&amp;Megnyitás...</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>&amp;Save</source>
- <translation>&amp;Mentés</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Save &amp;As...</source>
- <translation>Mentés &amp;másként...</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Save A&amp;ll</source>
- <translation>Az ö&amp;sszes mentése</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Save As &amp;Template...</source>
- <translation>Mentés &amp;sablonként...</translation>
- </message>
- <message>
- <location line="+1"/>
- <location line="+901"/>
- <source>&amp;Close</source>
- <translation>&amp;Bezárás</translation>
- </message>
- <message>
- <location line="-900"/>
- <source>Save &amp;Image...</source>
- <translation>&amp;Kép mentése...</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>&amp;Print...</source>
- <translation>&amp;Nyomtatás...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
- <source>View &amp;Code...</source>
- <translation>&amp;Kód nézet...</translation>
- </message>
- <message>
- <location line="+68"/>
- <source>ALT+CTRL+S</source>
- <translation>ALT+CTRL+S</translation>
- </message>
- <message>
- <location line="+356"/>
- <location line="+248"/>
- <source>Save Form As</source>
- <translation>Mentés űrlapként</translation>
- </message>
- <message>
- <location line="+429"/>
- <source>Preview failed</source>
- <translation>Előnézet hiba</translation>
- </message>
- <message>
- <location line="-575"/>
- <source>Code generation failed</source>
- <translation>Kód generálási hiba</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>
- <translation>Nem sikerült megnyitni a(z) %1 fájlt.
-Ok: %2
-Meg szeretné újra próbálni vagy kiválasztani egy különböző fájlt?</translation>
- </message>
- <message>
- <location line="+39"/>
<source>It was not possible to write the entire file %1 to disk.
Reason:%2
Would you like to retry?</source>
- <translation>Nem lehetett az egész %1 fájlt a lemezre írni.
-Ok: %2
-Meg szeretné próbálni újra?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+158"/>
<location line="+34"/>
<source>Assistant</source>
- <translation>Assistant</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+47"/>
+ <location line="+6"/>
+ <source>&amp;Close Preview</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+41"/>
<location line="+23"/>
<source>The backup file %1 could not be written.</source>
- <translation>Nem sikerült írni az archivált %1 fájlt.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+107"/>
<source>The backup directory %1 could not be created.</source>
- <translation>Nem sikerült létrehozni a(z) %1 archivált könyvtárat.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The temporary backup directory %1 could not be created.</source>
- <translation>Nem sikerült létrehozni az átmeneti archivált %1 könyvtárat.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+54"/>
+ <location line="+30"/>
+ <source>Preview failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+24"/>
<source>Image files (*.%1)</source>
- <translation>Kép fájlok (*.%1)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<location line="+17"/>
<source>Save Image</source>
- <translation>Kép mentése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-4"/>
<source>Saved image %1.</source>
- <translation>Mentett kép: %1.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>The file %1 could not be written.</source>
- <translation>Nem sikerült írni a(z) %1 fájlt.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<source>Please close all forms to enable the loading of additional fonts.</source>
- <translation>Kérem zárja be az összes űrlapot további betűk betöltéséhez.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+52"/>
<source>Printed %1.</source>
- <translation>Kinyomtatva: %1.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1899,7 +1883,7 @@ Meg szeretné próbálni újra?</translation>
<location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
<source>Appearance</source>
<extracomment>Tab in preferences dialog</extracomment>
- <translation>Megjelenés</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1907,17 +1891,17 @@ Meg szeretné próbálni újra?</translation>
<message>
<location line="-53"/>
<source>Docked Window</source>
- <translation>Dokkolt ablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Multiple Top-Level Windows</source>
- <translation>Összes felső szintű ablakok</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Toolwindow Font</source>
- <translation>Eszköz ablak betű</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1925,22 +1909,22 @@ Meg szeretné próbálni újra?</translation>
<message>
<location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="-71"/>
<source>Reset control</source>
- <translation>Vezérlés újraindítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set control</source>
- <translation>Vezérlés beállítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
<source>Control loaded</source>
- <translation>Vezérlés betöltve</translation>
+ <translation type="unfinished"></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>Egy COM kivétel történt a(z) %1 típusú meta hívás végrehajtása közben, &apos;%3&apos; %2 indexe.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1948,17 +1932,17 @@ Meg szeretné próbálni újra?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+89"/>
<source>Script errors occurred:</source>
- <translation>Szkript hiba történt:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+307"/>
<source>The preview failed to build.</source>
- <translation>Nem sikerült az előnézetet felépíteni.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+65"/>
<source>Designer</source>
- <translation>Designer</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1966,61 +1950,61 @@ Meg szeretné próbálni újra?</translation>
<message>
<location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
<source>%1 - %2[*]</source>
- <translation>%1 - %2[*]</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<source>Save Form?</source>
- <translation>Űrlap mentése?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Do you want to save the changes to this document before closing?</source>
- <translation>El szeretné menteni a változtatásokat ebbe a dokumentumba a bezárás előtt?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>If you don&apos;t save, your changes will be lost.</source>
- <translation>Ha nem menti el, a változtatásai el fognak veszni.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QDesignerMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1181"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1179"/>
<source>Type Here</source>
- <translation>Gépelje be ide</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Add Separator</source>
- <translation>Elválasztó hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+371"/>
<source>Insert separator</source>
- <translation>Elválasztó beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Remove separator</source>
- <translation>Elválasztó eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Remove action &apos;%1&apos;</source>
- <translation>&apos;%1&apos; tevékenység eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
- <location line="+650"/>
+ <location line="+648"/>
<source>Add separator</source>
- <translation>Elválasztó hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-348"/>
<source>Insert action</source>
- <translation>Tevékenység beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2028,22 +2012,22 @@ Meg szeretné próbálni újra?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-375"/>
<source>Type Here</source>
- <translation>Gépelje be ide</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+298"/>
<source>Remove Menu &apos;%1&apos;</source>
- <translation>&apos;%1&apos; menü eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Remove Menu Bar</source>
- <translation>Menü sáv eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+70"/>
<source>Menu</source>
- <translation>Menü</translation>
+ <translation type="unfinished">Menü</translation>
</message>
</context>
<context>
@@ -2051,45 +2035,45 @@ Meg szeretné próbálni újra?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+271"/>
<source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
- <translation>Egy XML hiba történt az egyéni %1 widget XML-ének elemzése közben: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>A required attribute (&apos;%1&apos;) is missing.</source>
- <translation>Egy szükséges attribútum (&apos;%1&apos;) hiányzik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+38"/>
<source>An invalid property specification (&apos;%1&apos;) was encountered. Supported types: %2</source>
- <translation>Egy érvénytelen tulajdonság specifikációt (&apos;%1&apos;) talált. Támogatott típusok: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<source>&apos;%1&apos; is not a valid string property specification.</source>
- <translation>&apos;%1&apos; nem egy érvényes sztring tulajdonság specifikáció.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+40"/>
<source>The XML of the custom widget %1 does not contain any of the elements &lt;widget&gt; or &lt;ui&gt;.</source>
- <translation>Az egyéni %1 widget XML-je nem tartalmaz semmilyen elemet &lt;widget&gt; vagy &lt;ui&gt;.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>The class attribute for the class %1 is missing.</source>
- <translation>Az osztály attribútum %1 osztályra hiányzik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>The class attribute for the class %1 does not match the class name %2.</source>
- <translation>Az osztály attribútum %1 osztályra nem egyezik meg a(z) %2 osztály nevével.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+754"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+758"/>
<source>Dynamic Properties</source>
- <translation>Dinamikus tulajdonságok</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2097,32 +2081,31 @@ Meg szeretné próbálni újra?</translation>
<message>
<location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+461"/>
<source>The layout type &apos;%1&apos; is not supported, defaulting to grid.</source>
- <translation>A(z) &apos;%1&apos; elrendezés típus nem támogatott, alapértelmezett rács.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+243"/>
+ <location line="+239"/>
<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>A(z) &apos;%1&apos; (%2) widget konténer kiterjesztése egy olyan widget-et adott vissza, amelyet a(z) &apos;%3&apos; (%4) Designer nem kezel, %5 lap lekéréskor.
-Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az egyéni widget domXML() eljárása által.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+599"/>
+ <location line="+545"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
- <translation>Váratlan elem &lt;%1&gt;</translation>
+ <translation type="unfinished"></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>Hiba történt a vágólap tartalmának beillesztése közben a(z) %1 sorban, %2 oszlopban: %3</translation>
+ <translation type="unfinished"></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>Hiba történt a vágólap tartalmának beillesztése közben. A rendszergazda elem &lt;ui&gt; hiányzik.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2130,12 +2113,12 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
<source>The template path %1 could not be created.</source>
- <translation>Nem sikerült létrehozni a(z) %1 sablon útvonalat.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+184"/>
<source>An error has been encountered while parsing device profile XML: %1</source>
- <translation>Hiba történt az eszköz profil %1 XML elemzése közben</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2143,32 +2126,32 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
<source>Property Editor</source>
- <translation>Tulajdonság szerkesztő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+54"/>
<source>Action Editor</source>
- <translation>Tevékenység szerkesztő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+42"/>
<source>Object Inspector</source>
- <translation>Objektum felügyelő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+35"/>
<source>Resource Browser</source>
- <translation>Erőforrás böngésző</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+34"/>
<source>Signal/Slot Editor</source>
- <translation>Jel/Szlot szerkesztő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+41"/>
<source>Widget Box</source>
- <translation>Widget doboz</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2176,143 +2159,153 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
<source>&amp;File</source>
- <translation>&amp;Fájl</translation>
+ <translation type="unfinished">&amp;Fájl</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+2"/>
+ <source>Edit</source>
+ <translation type="unfinished">Szerkesztés</translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>F&amp;orm</source>
- <translation>&amp;Űrlap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Preview in</source>
- <translation>Előnézetben</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+4"/>
+ <source>&amp;View</source>
+ <translation type="unfinished">&amp;Nézet</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
<source>&amp;Window</source>
- <translation>&amp;Ablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>&amp;Help</source>
- <translation>&amp;Súgó</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-15"/>
- <source>Edit</source>
- <translation>Szerkesztés</translation>
+ <location line="+23"/>
+ <source>Toolbars</source>
+ <translation type="unfinished">Eszköztárak</translation>
</message>
<message>
- <location line="+38"/>
- <source>Toolbars</source>
- <translation>Eszközsávok</translation>
+ <location line="+177"/>
+ <source>Widget Box</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+465"/>
+ <location line="+289"/>
<source>Save Forms?</source>
- <translation>Űrlap mentése?</translation>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+1"/>
<source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
- <translation>
- <numerusform>%n űrlapban vannak el nem mentett változtatások. Át szeretné tekintei ezeket a változtatásokat a kilépés előtt?</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
- <location line="-495"/>
- <source>&amp;View</source>
- <translation>&amp;Nézet</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>&amp;Settings</source>
- <translation>&amp;Beállítások</translation>
- </message>
- <message>
- <location line="+204"/>
- <source>Widget Box</source>
- <translation>Widget doboz</translation>
- </message>
- <message>
- <location line="+292"/>
+ <location line="+3"/>
<source>If you do not review your documents, all your changes will be lost.</source>
- <translation>Ha nem tekinti át újra a dokumentumokat, az összes változtatása el fog veszni.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Discard Changes</source>
- <translation>Változtatások eldobása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Review Changes</source>
- <translation>Változtatások áttekintése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+95"/>
<source>Backup Information</source>
- <translation>Archiválási információ</translation>
+ <translation type="unfinished"></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>A Designer utolsó szakasza nem megfelelően állt le. Archivált fájlok hagyott maga után. Be szeretné tölteni őket?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+111"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
- <translation>A(z) &lt;b&gt;%1&lt;/b&gt; fájlt nem sikerült megnyitni.</translation>
+ <translation type="unfinished"></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>A(z) &lt;b&gt;%1&lt;/b&gt; fájl nem egy érvényes Designer UI fájl.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+163"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+168"/>
<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>Egy üres osztály név volt %1-ra (objektum név: &apos;%2&apos;).</translation>
+ <translation type="unfinished"></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-nek nem sikerült létrehozni egy &apos;%1&apos; osztály egyéni widget-et, alapértelmezés a(z) &apos;%2&apos; alap osztályra.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>QFormBuilder was unable to create a widget of the class &apos;%1&apos;.</source>
- <translation>QFormBuilder-nak nem sikerült létrehoznia egy &apos;%1&apos; osztály widget-et.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+61"/>
<source>The layout type `%1&apos; is not supported.</source>
- <translation>A(z) &apos;%1&apos; elrendezés terv nem támogatott.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
<source>The set-type property %1 could not be read.</source>
- <translation>Nem sikerült olvasni a(z) %1 beállított típusú tulajdonságot.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+23"/>
<source>The enumeration-type property %1 could not be read.</source>
- <translation>A(z) %1 felsorolási típus tulajdonságot nem sikerült olvasni.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+190"/>
<source>Reading properties of the type %1 is not supported yet.</source>
- <translation>&apos;%1&apos; típus tulajdonságok olvasása még nem támogatott.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+266"/>
<source>The property %1 could not be written. The type %2 is not supported yet.</source>
- <translation>A(z) %1 tulajdonságot nem sikerült írni. A(z) %2 típus nem támogatott még.</translation>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+14"/>
+ <source>The flag-value &apos;%1&apos; is invalid. Zero will be used instead.</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2320,48 +2313,48 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
<source>Previous Page</source>
- <translation>Előző lap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Next Page</source>
- <translation>Következő lap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
<location line="+1"/>
<source>Before Current Page</source>
- <translation>Aktuális lap előtt</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>After Current Page</source>
- <translation>Aktuális lap után</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Change Page Order...</source>
- <translation>Lap sorrend megváltoztatása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+72"/>
<source>Change Page Order</source>
- <translation>Lap sorrend megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+49"/>
<source>Page %1 of %2</source>
- <translation>%2 %1 lapja</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<location line="+4"/>
<source>Insert Page</source>
- <translation>Lap beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2369,12 +2362,12 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location line="-153"/>
<source>Go to previous page of %1 &apos;%2&apos; (%3/%4).</source>
- <translation>Ugrás a(z) %1 &apos;%2&apos; (%3/%4) előző lapjára.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Go to next page of %1 &apos;%2&apos; (%3/%4).</source>
- <translation>Ugrás a(z) %1 &apos;%2&apos; (%3/%4) következő lapjára.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2382,28 +2375,28 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
<location line="+1"/>
<source>Before Current Page</source>
- <translation>Aktuális lap előtt</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>After Current Page</source>
- <translation>Aktuális lap után</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+283"/>
<source>Page %1 of %2</source>
- <translation>%2 %1 lapja</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<location line="+4"/>
<source>Insert Page</source>
- <translation>Lap beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2411,74 +2404,74 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
<source>Delete Page</source>
- <translation>Lap törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Before Current Page</source>
- <translation>Aktuális lap előtt</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>After Current Page</source>
- <translation>Aktuális lap után</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Change Page Order...</source>
- <translation>Lap sorrend megváltoztatása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+116"/>
<source>Change Page Order</source>
- <translation>Lap sorrend megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+44"/>
<source>Page %1 of %2</source>
- <translation>%2 %1 lapja</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Insert Page</source>
- <translation>Lap beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtBoolEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+255"/>
<location line="+10"/>
<location line="+25"/>
<source>True</source>
- <translation>Igaz</translation>
+ <translation type="unfinished">Igaz</translation>
</message>
<message>
<location line="-25"/>
<location line="+25"/>
<source>False</source>
- <translation>Hamis</translation>
+ <translation type="unfinished">Hamis</translation>
</message>
</context>
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1507"/>
<source>True</source>
- <translation>Igaz</translation>
+ <translation type="unfinished">Igaz</translation>
</message>
<message>
<location line="+1"/>
<source>False</source>
- <translation>Hamis</translation>
+ <translation type="unfinished">Hamis</translation>
</message>
</context>
<context>
<name>QtCharEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1581"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1584"/>
<source>Clear Char</source>
- <translation>Karakter ürítése</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2486,128 +2479,128 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location line="+605"/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
</context>
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4743"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4718"/>
<source>Red</source>
- <translation>Piros</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Green</source>
- <translation>Zöld</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Blue</source>
- <translation>Kék</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Alpha</source>
- <translation>Alfa</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtCursorDatabase</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-206"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-234"/>
<source>Arrow</source>
- <translation>Nyíl</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Up Arrow</source>
- <translation>Felfele nyíl</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Cross</source>
- <translation>Kereszt</translation>
+ <translation type="unfinished">Kereszt</translation>
</message>
<message>
<location line="+2"/>
<source>Wait</source>
- <translation>Várakozás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>IBeam</source>
- <translation>IBeam</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Size Vertical</source>
- <translation>Vertikális méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Size Horizontal</source>
- <translation>Horizontális méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Size Backslash</source>
- <translation>Visszaper méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Size Slash</source>
- <translation>Per méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Size All</source>
- <translation>Az összes méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Blank</source>
- <translation>Üres</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Split Vertical</source>
- <translation>Vertikális feldarabolás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Split Horizontal</source>
- <translation>Horizontális feldarabolás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Pointing Hand</source>
- <translation>Mutató kéz</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Forbidden</source>
- <translation>Tiltott</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Open Hand</source>
- <translation>Nyitott kéz</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Closed Hand</source>
- <translation>Zárt kéz</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>What&apos;s This</source>
- <translation>Mi ez</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Busy</source>
- <translation>Elfoglalt</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2615,12 +2608,12 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+198"/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
<message>
<location line="+20"/>
<source>Select Font</source>
- <translation>Betű kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2628,45 +2621,45 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-351"/>
<source>Family</source>
- <translation>Család</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<source>Point Size</source>
- <translation>Pont méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Bold</source>
- <translation>Félkövér</translation>
+ <translation type="unfinished">Félkövér</translation>
</message>
<message>
<location line="+7"/>
<source>Italic</source>
- <translation>Dőlt</translation>
+ <translation type="unfinished">Dőlt</translation>
</message>
<message>
<location line="+7"/>
<source>Underline</source>
- <translation>Aláhúzás</translation>
+ <translation type="unfinished">Aláhúzott</translation>
</message>
<message>
<location line="+7"/>
<source>Strikeout</source>
- <translation>Kitalálás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Kerning</source>
- <translation>Szóközökkel feltöltés</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtGradientDialog</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientdialog.ui" line="+53"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientdialog.ui"/>
<source>Edit Gradient</source>
- <translation>Meredekség szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2674,316 +2667,304 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+431"/>
<source>Start X</source>
- <translation>X indítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Start Y</source>
- <translation>Y indítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Final X</source>
- <translation>Végső X</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Final Y</source>
- <translation>Végső Y</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+24"/>
<source>Central X</source>
- <translation>X középpont</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-20"/>
<location line="+24"/>
<source>Central Y</source>
- <translation>Y középpont</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-20"/>
<source>Focal X</source>
- <translation>X gyújtópont</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Focal Y</source>
- <translation>Y gyújtópont</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Radius</source>
- <translation>Sugár</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<source>Angle</source>
- <translation>Szög</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+288"/>
<source>Linear</source>
- <translation>Lineáris</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Radial</source>
- <translation>Sugárirányú</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Conical</source>
- <translation>Kúp alakú</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<source>Pad</source>
- <translation>Lyuk</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Repeat</source>
- <translation>Megismétlés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Reflect</source>
- <translation>Prizma</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="+53"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui"/>
<source>Form</source>
- <translation>Űrlap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+48"/>
+ <location/>
<source>Gradient Editor</source>
- <translation>Meredekség szerkesztő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <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>Ez a mező jeleníti meg a meredekség egy előzetének szerkesztését. Ez engedélyezi a meredekség típusához tartozó paraméter specifikus dolgok szerkesztését, mint a kezdő és végpont, sugár, stb. a fogd &amp; vidd módszerrel.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+16"/>
+ <location/>
<source>1</source>
- <translation>1</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+35"/>
+ <location/>
<source>2</source>
- <translation>2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+35"/>
+ <location/>
<source>3</source>
- <translation>3</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+35"/>
+ <location/>
<source>4</source>
- <translation>4</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+35"/>
+ <location/>
<source>5</source>
- <translation>5</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+35"/>
+ <location/>
<source>Gradient Stops Editor</source>
- <translation>Meredekség leállítás szerkesztő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <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>Ez a mező engedélyezi a meredekség leállításának szerkesztését.Dupla kattintás a létező leállítás kezelőn duplikálja ezt. Dupla kattintás a létező leállítás kezelőn kívül létrehoz egy új leállítást. Fogd &amp; vidd az újrapozíciónálo kezelőt. Használja a jobb egér gombot a felugró menü összefüggéshez extra tevékenységekkel.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Zoom</source>
- <translation>Zoom</translation>
+ <translation type="unfinished">Nagyítás</translation>
</message>
<message>
- <location line="+19"/>
- <location line="+3"/>
+ <location/>
<source>Reset Zoom</source>
- <translation>Újraindítás zoom</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Position</source>
- <translation>Pozíció</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
- <location line="+49"/>
- <location line="+22"/>
+ <location/>
<source>Hue</source>
- <translation>Színárnyalat</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-68"/>
+ <location/>
<source>H</source>
- <translation>H</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+87"/>
- <location line="+49"/>
+ <location/>
<source>Saturation</source>
- <translation>Telítettség</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-46"/>
+ <location/>
<source>S</source>
- <translation>S</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+68"/>
+ <location/>
<source>Sat</source>
- <translation>Sat</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
- <location line="+49"/>
+ <location/>
<source>Value</source>
- <translation>Érték</translation>
+ <translation type="unfinished">Érték</translation>
</message>
<message>
- <location line="-46"/>
+ <location/>
<source>V</source>
- <translation>V</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+68"/>
+ <location/>
<source>Val</source>
- <translation>Val</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
- <location line="+49"/>
- <location line="+22"/>
+ <location/>
<source>Alpha</source>
- <translation>Alfa</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-68"/>
+ <location/>
<source>A</source>
- <translation>A</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+81"/>
+ <location/>
<source>Type</source>
- <translation>Típus</translation>
+ <translation type="unfinished">Típus</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Spread</source>
- <translation>Kiterjedés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<source>Color</source>
- <translation>Szín</translation>
+ <translation type="unfinished">Szín</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Current stop&apos;s color</source>
- <translation>Aktuális leállítás színe</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>Show HSV specification</source>
- <translation>HSV specifikáció megjelenítése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>HSV</source>
- <translation>HSV</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>Show RGB specification</source>
- <translation>RGB specifikáció megjelenítése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>RGB</source>
- <translation>RGB</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+28"/>
+ <location/>
<source>Current stop&apos;s position</source>
- <translation>Aktuális leállítás pozíciója</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+188"/>
+ <location/>
<source>%</source>
- <translation>%</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+111"/>
+ <location/>
<source>Zoom In</source>
- <translation>Nagyítás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Zoom Out</source>
- <translation>Kicsinyítés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+35"/>
+ <location/>
<source>Toggle details extension</source>
- <translation>Részlet kiterjesztések kapcsolgatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>&gt;</source>
- <translation>&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<source>Linear Type</source>
- <translation>Lineáris típus</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
- <location line="+22"/>
- <location line="+22"/>
- <location line="+22"/>
- <location line="+22"/>
- <location line="+22"/>
+ <location/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
<message>
- <location line="-91"/>
+ <location/>
<source>Radial Type</source>
- <translation>Sugárirányú típus</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>Conical Type</source>
- <translation>Kúp alakú típus</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>Pad Spread</source>
- <translation>Lyuk kiterjedés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>Repeat Spread</source>
- <translation>Ismétlési kiterjedés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>Reflect Spread</source>
- <translation>Prizma kiterjedés</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -2991,37 +2972,37 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+947"/>
<source>New Stop</source>
- <translation>Új leállítás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
<location line="+1"/>
<source>Flip All</source>
- <translation>Az összes feldobása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Select All</source>
- <translation>Az összes kiválasztása</translation>
+ <translation type="unfinished">Összes kijelölése</translation>
</message>
<message>
<location line="+1"/>
<source>Zoom In</source>
- <translation>Nagyítás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Zoom Out</source>
- <translation>Kicsinyítés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Reset Zoom</source>
- <translation>Zoom újraindítása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3029,62 +3010,63 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
<source>Grad</source>
- <translation>Diplomás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+26"/>
<source>Remove Gradient</source>
- <translation>Meredekség eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Are you sure you want to remove the selected gradient?</source>
- <translation>El szeretné távolítani a kiválasztott meredekséget?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui" line="+39"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
<location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+74"/>
<source>New...</source>
- <translation>Új...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
<source>Edit...</source>
- <translation>Szerkesztés...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
<source>Rename</source>
- <translation>Átnevezés</translation>
+ <translation type="unfinished">Átnevezés</translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
<source>Remove</source>
- <translation>Eltávolítás</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
- <location line="-83"/>
+ <location/>
<source>Gradient View</source>
- <translation>Meredekség nézet</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtGradientViewDialog</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui" line="+53"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/>
<source>Select Gradient</source>
- <translation>Meredekség kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtKeySequenceEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+221"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+249"/>
<source>Clear Shortcut</source>
- <translation>Gyorsbillentyű kitisztítása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3092,17 +3074,17 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3541"/>
<source>%1, %2</source>
- <translation>%1, %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+53"/>
<source>Language</source>
- <translation>Nyelv</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Country</source>
- <translation>Ország</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3110,17 +3092,17 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location line="+411"/>
<source>(%1, %2)</source>
- <translation>(%1, %2)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+71"/>
<source>X</source>
- <translation>X</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Y</source>
- <translation>Y</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3128,30 +3110,30 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location line="-320"/>
<source>(%1, %2)</source>
- <translation>(%1, %2)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+37"/>
<source>X</source>
- <translation>X</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Y</source>
- <translation>Y</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtPropertyBrowserUtils</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-136"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-156"/>
<source>[%1, %2, %3] (%4)</source>
- <translation>[%1, %2, %3] (%4)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>[%1, %2]</source>
- <translation>[%1, %2]</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3159,27 +3141,27 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1706"/>
<source>[(%1, %2), %3 x %4]</source>
- <translation>[(%1, %2), %3 x %4]</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+156"/>
<source>X</source>
- <translation>X</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Y</source>
- <translation>Y</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Width</source>
- <translation>Szélesség</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>Height</source>
- <translation>Magasság</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3187,27 +3169,27 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<message>
<location line="-612"/>
<source>[(%1, %2), %3 x %4]</source>
- <translation>[(%1, %2), %3 x %4]</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+120"/>
<source>X</source>
- <translation>X</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Y</source>
- <translation>Y</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Width</source>
- <translation>Szélesség</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Height</source>
- <translation>Magasság</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3216,71 +3198,70 @@ Konténer lapokat XML-ben való specifikációjuk által kellene hozzáadni, az
<location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+76"/>
<source>%1 already exists.
Do you want to replace it?</source>
- <translation>%1 már létezik.
-Le szeretné cserélni?</translation>
+ <translation type="unfinished"></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>A fájl nem egy erőforrás fájl, &apos;%1&apos; elem található, ahol &apos;%2&apos; a várt.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+902"/>
<source>%1 [read-only]</source>
- <translation>%1 [csak olvasható]</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+198"/>
<source>%1 [missing]</source>
- <translation>%1 [hiányzik]</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-72"/>
<source>&lt;no prefix&gt;</source>
- <translation>&lt;nincs előtag&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+320"/>
<location line="+566"/>
<source>New Resource File</source>
- <translation>Új erőforrás fájl</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-564"/>
<location line="+25"/>
<source>Resource files (*.qrc)</source>
- <translation>Erőforrás fájlok (*.qrc)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-2"/>
<source>Import Resource File</source>
- <translation>Erőforrás fájl importálása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+112"/>
<source>newPrefix</source>
- <translation>újElőtag</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<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;Figyelmeztetés:&lt;/b&gt; A(z)&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;fájl az aktuális erőforrás fájl szülő könyvtárán kívül helyezkedik el.&lt;/p&gt;</translation>
+ <translation type="unfinished"></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;A hiba megoldásához, nyomja le a következőt:&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Másolás&lt;/th&gt;&lt;td&gt;a fájl erőforrás fájljának szülőkönyvtárába másoláshoz.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Másolás másként...&lt;/th&gt;&lt;td&gt;a fájl erőforrás fájljának szülőkönyvtárának egy alkönyvtárába másoláshoz.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Megtartás&lt;/th&gt;&lt;td&gt;az aktuális helyének használatához. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Add Files</source>
- <translation>Fájlok hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Incorrect Path</source>
- <translation>Helytelen útvonal</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
@@ -3288,50 +3269,49 @@ Le szeretné cserélni?</translation>
<location line="+212"/>
<location line="+7"/>
<source>Copy</source>
- <translation>Másolás</translation>
+ <translation type="unfinished">Másolás</translation>
</message>
<message>
<location line="-236"/>
<source>Copy As...</source>
- <translation>Másolás, mint...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Keep</source>
- <translation>Megtartás</translation>
+ <translation type="unfinished">Meghagy</translation>
</message>
<message>
<location line="+2"/>
<source>Skip</source>
- <translation>Kihagyás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+87"/>
<source>Clone Prefix</source>
- <translation>Előtag klónozása</translation>
+ <translation type="unfinished"></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>Gépelje be az utótagot, melyet hozzá akar adni a klónozott fájl nevekhez.
-Ez például egy nyelv kiterjesztés lenne, úgy mint &quot;_de&quot;.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+113"/>
<location line="+4"/>
<source>Copy As</source>
- <translation>Másolás, mint</translation>
+ <translation type="unfinished"></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;A kiválaszott fájl:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;az aktuális erőforrás fájl könytárán kívül helyezkedik el:&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Kérem válasszon másik útvonalat ezen a könyvtáron belül.&lt;p&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<source>Could not overwrite %1.</source>
- <translation>Nem sikerült felülírni %1.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
@@ -3339,196 +3319,189 @@ Ez például egy nyelv kiterjesztés lenne, úgy mint &quot;_de&quot;.</translat
%1
to
%2</source>
- <translation>Nem sikerült másolni
-%1
-ide
-%2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+35"/>
<source>A parse error occurred at line %1, column %2 of %3:
%4</source>
- <translation>Egy elemzési hiba történt %3 %1 sorában, %2 oszlopában:
-%4</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Save Resource File</source>
- <translation>Erőforrás fájl mentése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Could not write %1: %2</source>
- <translation>Nem sikerült írni %1: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+33"/>
<source>Edit Resources</source>
- <translation>Erőforrások szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+35"/>
<source>New...</source>
- <translation>Új...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Open...</source>
- <translation>Megnyitás...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Open Resource File</source>
- <translation>Erőforrás fájl megnyitása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+11"/>
<source>Remove</source>
- <translation>Eltávolítás</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
<location line="-10"/>
<location line="+11"/>
<source>Move Up</source>
- <translation>Mozgatás felfelé</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-10"/>
<location line="+11"/>
<source>Move Down</source>
- <translation>Mozgatás lefelé</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-9"/>
<location line="+1"/>
<source>Add Prefix</source>
- <translation>Előtag hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Add Files...</source>
- <translation>Fájlok hozzáadása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Change Prefix</source>
- <translation>Előtag megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Change Language</source>
- <translation>Nyelv megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Change Alias</source>
- <translation>Álnév megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Clone Prefix...</source>
- <translation>Előtag klónozása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+37"/>
<source>Prefix / Path</source>
- <translation>Előtag / Útvonal</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Language / Alias</source>
- <translation>Nyelv / Álnév</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+117"/>
<source>&lt;html&gt;&lt;p&gt;&lt;b&gt;Warning:&lt;/b&gt; There have been problems while reloading the resources:&lt;/p&gt;&lt;pre&gt;%1&lt;/pre&gt;&lt;/html&gt;</source>
- <translation>&lt;html&gt;&lt;p&gt;&lt;b&gt;Figyelmeztetés:&lt;/b&gt; Hibák történtek az erőforrások újra töltése közben:&lt;/p&gt;&lt;pre&gt;%1&lt;/pre&gt;&lt;/html&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Resource Warning</source>
- <translation>Erőforrás figyelmeztetés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="+13"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui"/>
<source>Dialog</source>
- <translation>Párbeszéd ablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+26"/>
+ <location/>
<source>New File</source>
- <translation>Új fájl</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
- <location line="+50"/>
+ <location/>
<source>N</source>
- <translation>N</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-43"/>
+ <location/>
<source>Remove File</source>
- <translation>Fájl eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
- <location line="+57"/>
+ <location/>
<source>R</source>
- <translation>R</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-34"/>
+ <location/>
<source>I</source>
- <translation>I</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+14"/>
+ <location/>
<source>New Resource</source>
- <translation>Új erőforrás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>A</source>
- <translation>A</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Remove Resource or File</source>
- <translation>Erőforrás vagy fájl eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+566"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+567"/>
<source>Size: %1 x %2
%3</source>
- <translation>Méret: %1 x %2
-%3</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<source>Edit Resources...</source>
- <translation>Erőforrások szerkesztése...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Reload</source>
- <translation>Újratöltés</translation>
+ <translation type="unfinished">Újratöltés</translation>
</message>
<message>
<location line="+7"/>
<source>Copy Path</source>
- <translation>Útvonal másolása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QtResourceViewDialog</name>
<message>
- <location line="+250"/>
+ <location line="+252"/>
<source>Select Resource</source>
- <translation>Erőforrás kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3536,17 +3509,17 @@ ide
<message>
<location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-535"/>
<source>%1 x %2</source>
- <translation>%1 x %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+130"/>
<source>Width</source>
- <translation>Szélesség</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>Height</source>
- <translation>Magasság</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3555,32 +3528,32 @@ ide
<location line="+1709"/>
<location line="+1"/>
<source>&lt;Invalid&gt;</source>
- <translation>&lt;Érvénytelen&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>[%1, %2, %3, %4]</source>
- <translation>[%1, %2, %3, %4]</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+45"/>
<source>Horizontal Policy</source>
- <translation>Horizontális irányvonal</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>Vertical Policy</source>
- <translation>Vertikális irányelv</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>Horizontal Stretch</source>
- <translation>Horizontális terjedelem</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Vertical Stretch</source>
- <translation>Vertikális terjedelem</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3588,17 +3561,17 @@ ide
<message>
<location line="-2286"/>
<source>%1 x %2</source>
- <translation>%1 x %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+96"/>
<source>Width</source>
- <translation>Szélesség</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Height</source>
- <translation>Magasság</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3606,107 +3579,107 @@ ide
<message>
<location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1240"/>
<source>Custom Toolbar</source>
- <translation>Egyéni eszköz sáv</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+544"/>
<source>&lt; S E P A R A T O R &gt;</source>
- <translation>&lt; E L V Á L A S Z T Ó &gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="+13"/>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui"/>
<source>Customize Toolbars</source>
- <translation>Eszköz sávok testreszabása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>1</source>
- <translation>1</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location/>
<source>Actions</source>
- <translation>Tevékenységek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+15"/>
+ <location/>
<source>Toolbars</source>
- <translation>Eszköz sávok</translation>
+ <translation type="unfinished">Eszköztárak</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Add new toolbar</source>
- <translation>Új eszköz sáv hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>New</source>
- <translation>Új</translation>
+ <translation type="unfinished">Új</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Remove selected toolbar</source>
- <translation>Kiválaszott eszköz sáv eltávolítás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Remove</source>
- <translation>Eltávolítás</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Rename toolbar</source>
- <translation>Eszköz sáv átnevezése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Rename</source>
- <translation>Átnevezés</translation>
+ <translation type="unfinished">Átnevezés</translation>
</message>
<message>
- <location line="+23"/>
+ <location/>
<source>Move action up</source>
- <translation>Tevékenység mozgatása felfelé</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Up</source>
- <translation>Fel</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Remove action from toolbar</source>
- <translation>Tevékenység eltávolítása az eszköz sávról</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>&lt;-</source>
- <translation>&lt;-</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Add action to toolbar</source>
- <translation>Tevékenység hozzáadása az eszközsávhoz</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>-&gt;</source>
- <translation>-&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Move action down</source>
- <translation>Tevékenység mozgatása felfele</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Down</source>
- <translation>Le</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+25"/>
+ <location/>
<source>Current Toolbar Actions</source>
- <translation>Aktuális eszköz sáv tevékenységek</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3714,12 +3687,12 @@ ide
<message>
<location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
<source>Property</source>
- <translation>Tulajdonság</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Value</source>
- <translation>Érték</translation>
+ <translation type="unfinished">Érték</translation>
</message>
</context>
<context>
@@ -3727,64 +3700,63 @@ ide
<message>
<location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
<source>Add path...</source>
- <translation>Útvonal hozzáadása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+23"/>
<source>Template Exists</source>
- <translation>A sablon létezik</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>A template with the name %1 already exists.
Do you want overwrite the template?</source>
- <translation>Egy %1 nevű sablon már létezik.
-Felül szeretné írni a sablont?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Overwrite Template</source>
- <translation>Sablom felülírása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Open Error</source>
- <translation>Megnyitási hiba</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>There was an error opening template %1 for writing. Reason: %2</source>
- <translation>Hiba történt a(z) %1 sablon írásra megnyitása közben. Ok: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<source>Write Error</source>
- <translation>Írása hiba</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>There was an error writing the template %1 to disk. Reason: %2</source>
- <translation>Hiba történt a(z) %1 sablon lemezre írása közben. Ok: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+27"/>
<source>Pick a directory to save templates in</source>
- <translation>Egy könyvtár gondos kiválasztása, melybe a könytárak lesznek elmentve</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/designer/saveformastemplate.ui" line="+45"/>
+ <location filename="../tools/designer/src/designer/saveformastemplate.ui"/>
<source>Save Form As Template</source>
- <translation>Az űrlap sablonként mentése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+49"/>
- <source>&amp;Category:</source>
- <translation>&amp;Kategória:</translation>
+ <location/>
+ <source>&amp;Name:</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-35"/>
- <source>&amp;Name:</source>
- <translation>&amp;Név:</translation>
+ <location/>
+ <source>&amp;Category:</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3793,30 +3765,30 @@ Felül szeretné írni a sablont?</translation>
<location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+59"/>
<source>An error occurred while running the scripts for &quot;%1&quot;:
</source>
- <translation>Hiba történt a szkriptek futtatása közben &apos;%1&apos;-re:</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SelectSignalDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui" line="+14"/>
+ <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui"/>
<source>Go to slot</source>
- <translation>Szlotra ugrás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Select signal</source>
- <translation>Jel kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>signal</source>
- <translation>jel</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>class</source>
- <translation>osztály</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3824,45 +3796,40 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
<source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
- <translation>KÜLDŐ(%1), JEL(%2), FOGADÓ(%3), SZLOT(%4)</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SignalSlotDialogClass</name>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="+13"/>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui"/>
<source>Signals and slots</source>
- <translation>Jelek és szlotok</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Slots</source>
- <translation>Szlotok</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+11"/>
- <location line="+49"/>
+ <location/>
<source>Add</source>
- <translation>Hozzáadás</translation>
+ <translation type="unfinished">Hozzáadás</translation>
</message>
<message>
- <location line="-46"/>
- <location line="+10"/>
- <location line="+39"/>
- <location line="+10"/>
+ <location/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
<message>
- <location line="-52"/>
- <location line="+49"/>
+ <location/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
- <location line="-21"/>
+ <location/>
<source>Signals</source>
- <translation>Jelek</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3870,12 +3837,12 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
<source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
- <translation>Horizontális távtartók &apos;%1&apos;, %2 x %3</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<source>Vertical Spacer &apos;%1&apos;, %2 x %3</source>
- <translation>Vertikális távtartók &apos;%1&apos;, %2 x %3</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3884,8 +3851,7 @@ Felül szeretné írni a sablont?</translation>
<location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
<source>Template Paths</source>
<extracomment>Tab in preferences dialog</extracomment>
- <translatorcomment>Слово &quot;пути&quot; опустил, т.к. с другими вкладками не перепутать, а длинная вкладка не смотрится.</translatorcomment>
- <translation>Sablon útvonalak</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3893,55 +3859,75 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
<source>Configure Toolbars...</source>
- <translation>Eszköz sávok konfigurálása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+15"/>
<source>Window</source>
- <translation>Ablak</translation>
+ <translation type="unfinished">Ablak</translation>
</message>
<message>
<location line="+1"/>
<source>Help</source>
- <translation>Súgó</translation>
+ <translation type="unfinished">Segítség</translation>
</message>
<message>
<location line="+7"/>
<source>Style</source>
- <translation>Stílus</translation>
+ <translation type="unfinished">Stílus</translation>
</message>
<message>
<location line="+2"/>
<source>Dock views</source>
- <translation>Dokk nézetek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
+ <source>File</source>
+ <translation type="unfinished">Fájl</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Edit</source>
+ <translation type="unfinished">Szerkesztés</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Tools</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>Toolbars</source>
- <translation>Eszköz sávok</translation>
+ <translation type="unfinished">Eszköztárak</translation>
</message>
</context>
<context>
<name>VersionDialog</name>
<message>
- <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+171"/>
+ <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+170"/>
<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;Verzió %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>&lt;br/&gt;Qt Designer is a graphical user interface designer for Qt applications.&lt;br/&gt;</source>
- <translation>&lt;br/&gt;Qt Designer egy grafikus felhasználói felület tervező Qt alkalmazásokhoz.&lt;br/&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1&lt;br/&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</source>
- <translation>%1&lt;br/&gt;Szerzői jog (C) 2010 Nokia vállalat és/vagy leányvállalata(i).</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3949,7 +3935,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+814"/>
<source>The file contains a custom widget &apos;%1&apos; whose base class (%2) differs from the current entry in the widget database (%3). The widget database is left unchanged.</source>
- <translation>A fájl egy egyéni &apos;%1&apos; widget-t tartalmaz, aminek az alap osztálya (%2) különbözik az aktuális beviteltől a widget adatbázisban (%3). A widget adatbázis változatlanul lett hagyva.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -3957,120 +3943,120 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+123"/>
<source>New...</source>
- <translation>Új...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Edit...</source>
- <translation>Szerkesztés...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Go to slot...</source>
- <translation>Ugrás a szlotra...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Copy</source>
- <translation>Másolás</translation>
+ <translation type="unfinished">Másolás</translation>
</message>
<message>
<location line="+1"/>
<source>Cut</source>
- <translation>Kivágás</translation>
+ <translation type="unfinished">Kivágás</translation>
</message>
<message>
<location line="+1"/>
<source>Paste</source>
- <translation>Beillesztés</translation>
+ <translation type="unfinished">Beillesztés</translation>
</message>
<message>
<location line="+1"/>
<source>Select all</source>
- <translation>Az összes kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
<location line="+9"/>
<source>Actions</source>
- <translation>Tevékenységek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+49"/>
<source>Configure Action Editor</source>
- <translation>Tevékenység szerkesztő konfigurálása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Icon View</source>
- <translation>Ikon nézet</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Detailed View</source>
- <translation>Részletezett nézet</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+246"/>
<source>New action</source>
- <translation>Új tevékenység</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+98"/>
<source>Edit action</source>
- <translation>Tevékenység szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+69"/>
<source>Remove action &apos;%1&apos;</source>
- <translation>&apos;%1&apos; tevékenység eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<source>Remove actions</source>
- <translation>Tevékenységek eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+186"/>
<source>Used In</source>
- <translation>Használva ebben</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+89"/>
<source>Name</source>
- <translation>Név</translation>
+ <translation type="unfinished">Név</translation>
</message>
<message>
<location line="+1"/>
<source>Used</source>
- <translation>Használt</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Text</source>
- <translation>Szöveg</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Shortcut</source>
- <translation>Rövidebb út</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Checkable</source>
- <translation>Leellenőrizhető</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>ToolTip</source>
- <translation>Eszköz tipp</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4078,27 +4064,27 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+219"/>
<source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
- <translation>A(z) &apos;%1&apos; elem hiányzik, a szükséges attribútum &apos;%2&apos;.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Empty brush name encountered.</source>
- <translation>Üres kefe nevet talált.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<source>An unexpected element &apos;%1&apos; was encountered.</source>
- <translation>Egy &apos;%1&apos; váratlan elemet talált.</translation>
+ <translation type="unfinished"></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>Hiba történt a(z) &apos;%1&apos; ecset definíciós fájl olvasása közben %2 sorban, %3 oszlopban: %4</translation>
+ <translation type="unfinished"></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>Hiba történt a(z) &apos;%1&apos; erőforrás fájl olvasása közben, %2 sorban, %3 oszlopban: %4</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4106,31 +4092,31 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+261"/>
<source>Add buddy</source>
- <translation>Haver hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+52"/>
<source>Remove buddies</source>
- <translation>Haverok eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+24"/>
<source>Remove %n buddies</source>
- <translation>
- <numerusform>%n haverok eltávolítása</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location line="+51"/>
<source>Add %n buddies</source>
- <translation>
- <numerusform>%n haver hozzáadása</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
<location line="+47"/>
<source>Set automatically</source>
- <translation>Automatikus beállítás</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4138,7 +4124,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+73"/>
<source>Edit Buddies</source>
- <translation>Haverok szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4146,7 +4132,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+56"/>
<source>Edit Buddies</source>
- <translation>Haverok szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4154,12 +4140,12 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+7"/>
<source>Select members</source>
- <translation>Tagok kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Break</source>
- <translation>Törés</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4167,32 +4153,32 @@ Felül szeretné írni a sablont?</translation>
<message>
<location line="+121"/>
<source>Assign to button group</source>
- <translation>Gomb csoporthoz rendelés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Button group</source>
- <translation>Gomb csoport</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>New button group</source>
- <translation>Új gomb csoport</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Change text...</source>
- <translation>Szöveg megváltoztatása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>None</source>
- <translation>Semmi</translation>
+ <translation type="unfinished">Nincs</translation>
</message>
<message>
<location line="+101"/>
<source>Button group &apos;%1&apos;</source>
- <translation>&apos;%1&apos; gomb csoport</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4205,22 +4191,22 @@ Felül szeretné írni a sablont?</translation>
<message>
<location line="+4"/>
<source>Copy All</source>
- <translation>Az összes másolása</translation>
+ <translation>Mindent másol</translation>
</message>
<message>
<location line="+5"/>
<source>&amp;Find in Text...</source>
- <translation>&amp;Keresés szövegben...</translation>
+ <translation>&amp;Keresés a szövegben...</translation>
</message>
<message>
<location line="+75"/>
<source>A temporary form file could not be created in %1.</source>
- <translation>Egy átmeneti űrlap fájlt nem sikerült létrehozni %1-ben.</translation>
+ <translation>Az ideiglenes űrlap fájl nem hozható létre a(z) %1 helyen.</translation>
</message>
<message>
<location line="+6"/>
<source>The temporary form file %1 could not be written.</source>
- <translation>A(z) %1 átmeneti űrlap fájlt nem sikerült írni.</translation>
+ <translation>A(z) %1 ideiglenes űrlap fájl nem írható.</translation>
</message>
<message>
<location line="+21"/>
@@ -4235,17 +4221,17 @@ Felül szeretné írni a sablont?</translation>
<message>
<location line="+0"/>
<source>Header Files (*.%1)</source>
- <translation>Fejállományok (*.%1)</translation>
+ <translation>Fejléc fájlok (*.%1)</translation>
</message>
<message>
<location line="+6"/>
<source>The file %1 could not be opened: %2</source>
- <translation>A(z) %1 fájlt nem sikerült megnyitni: %2</translation>
+ <translation>A(z) %1 fájl nem nyitható meg: %2</translation>
</message>
<message>
<location line="+5"/>
<source>The file %1 could not be written: %2</source>
- <translation>A(z) %1 fájlt nem sikerült írni: %2</translation>
+ <translation>A(z) %1 fájl nem írható: %2</translation>
</message>
<message>
<location line="+11"/>
@@ -4258,7 +4244,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+246"/>
<source>Text Color</source>
- <translation>Szöveg szín</translation>
+ <translation>Szövegszín</translation>
</message>
</context>
<context>
@@ -4266,12 +4252,13 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+68"/>
<source>Edit Items...</source>
- <translation>Elemek szerkesztése...</translation>
+ <translation>Elem szerkesztése...</translation>
</message>
<message>
<location line="+38"/>
<source>Change Combobox Contents</source>
- <translation>Combobox tartalmának megváltoztatása</translation>
+ <translatorcomment>CHECKIT: too long...</translatorcomment>
+ <translation type="unfinished">Legördülő doboz tartalmának megváltoztatása</translation>
</message>
</context>
<context>
@@ -4279,7 +4266,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+156"/>
<source>Change description...</source>
- <translation>Leírás megváltoztatása...</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4287,17 +4274,17 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+1313"/>
<source>Select All</source>
- <translation>Az összes kiválasztása</translation>
+ <translation type="unfinished">Összes kijelölése</translation>
</message>
<message>
<location line="+3"/>
<source>Deselect All</source>
- <translation>Az összes kijelölés eltűntetése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
</context>
<context>
@@ -4305,52 +4292,52 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/>
<source>Sender</source>
- <translation>Küldő</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Signal</source>
- <translation>Jel</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Receiver</source>
- <translation>Fogadó</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Slot</source>
- <translation>Szlot</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+90"/>
<source>&lt;sender&gt;</source>
- <translation>&lt;küldő&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>&lt;signal&gt;</source>
- <translation>&lt;jel&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>&lt;receiver&gt;</source>
- <translation>&lt;fogadó&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>&lt;slot&gt;</source>
- <translation>&lt;szlot&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+108"/>
<source>The connection already exists!&lt;br&gt;%1</source>
- <translation>A kapcsolat már létezik!&lt;br&gt;%1</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Signal and Slot Editor</source>
- <translation>Jel és Szlot szerkesztő</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4358,42 +4345,42 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+79"/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
<location line="+25"/>
<source>Insert</source>
- <translation>Beszúrás</translation>
+ <translation type="unfinished">Beszúrás</translation>
</message>
<message>
<location line="+3"/>
<source>Insert Page Before Current Page</source>
- <translation>Lap beszúrása az aktuális lap elé</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Insert Page After Current Page</source>
- <translation>Lap beszúrása az aktuális lap után</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Add Subwindow</source>
- <translation>Alablak hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+38"/>
<source>Subwindow</source>
- <translation>Al ablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Page</source>
- <translation>Lap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Page %1 of %2</source>
- <translation>%2 %1 lapja</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4402,18 +4389,18 @@ Felül szeretné írni a sablont?</translation>
<location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+27"/>
<source>System (%1 x %2)</source>
<extracomment>System resolution</extracomment>
- <translation>Rendszer (%1 x %2)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>User defined</source>
- <translation>Felhasználó által definiált</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+18"/>
<source> x </source>
<extracomment>DPI X/Y separator</extracomment>
- <translation> x </translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4422,123 +4409,123 @@ Felül szeretné írni a sablont?</translation>
<location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+647"/>
<location line="+6"/>
<source>AlignLeft</source>
- <translation>IgazításBalra</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-5"/>
<source>AlignHCenter</source>
- <translation>IgazításHKözépre</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>AlignRight</source>
- <translation>IgazításJobbra</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>AlignJustify</source>
- <translation>IgazításFeloldása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>AlignTop</source>
- <translation>IgazításTetejére</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+4"/>
<source>AlignVCenter</source>
- <translation>IgazításVKözépre</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-3"/>
<source>AlignBottom</source>
- <translation>IgazításAlulra</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+565"/>
<source>%1, %2</source>
- <translation>%1, %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+6"/>
<source>Customized (%n roles)</source>
- <translation>
- <numerusform>Testreszabva (%n szabály)</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
<location line="+1"/>
<source>Inherited</source>
- <translation>Örökölt</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+566"/>
<source>Horizontal</source>
- <translation>Horizontális</translation>
+ <translation type="unfinished">Vízszintes</translation>
</message>
<message>
<location line="+9"/>
<source>Vertical</source>
- <translation>Vertikális</translation>
+ <translation type="unfinished">Függőleges</translation>
</message>
<message>
<location line="+15"/>
<source>Normal Off</source>
- <translation>Normál ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Normal On</source>
- <translation>Normál be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Disabled Off</source>
- <translation>Tiltás ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Disabled On</source>
- <translation>Tiltás be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Active Off</source>
- <translation>Aktív ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Active On</source>
- <translation>Aktív be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Selected Off</source>
- <translation>Kiválasztás ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Selected On</source>
- <translation>Kiválasztás be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+21"/>
<source>translatable</source>
- <translation>fordítható</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-15"/>
<location line="+21"/>
<source>disambiguation</source>
- <translation>Nem félreérthető</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-15"/>
<location line="+21"/>
<source>comment</source>
- <translation>megjegyzés</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4546,106 +4533,106 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
<source>Device Profiles (*.%1)</source>
- <translation>Eszköz profilok (*.%1)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+31"/>
<source>Default</source>
- <translation>Alapértelmezett</translation>
+ <translation type="unfinished">Alapértelmezett</translation>
</message>
<message>
<location line="+67"/>
<source>Save Profile</source>
- <translation>Profil mentése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+10"/>
<source>Save Profile - Error</source>
- <translation>Profil mentése - Hiba</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<source>Unable to open the file &apos;%1&apos; for writing: %2</source>
- <translation>Nem lehet megnyitni a(z) &apos;%1&apos; fájlt írásra: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Open profile</source>
- <translation>Profil megnyitása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<location line="+6"/>
<source>Open Profile - Error</source>
- <translation>Profil megnyitása - Hiba</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-6"/>
<source>Unable to open the file &apos;%1&apos; for reading: %2</source>
- <translation>Nem lehet megnyitni a(z) &apos;%1&apos; fájlt olvasásra: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>&apos;%1&apos; is not a valid profile: %2</source>
- <translation>&apos;%1&apos; nem egy érvényes profil: %2</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::Dialog</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="+53"/>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui"/>
<source>Dialog</source>
- <translation>Párbeszéd ablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>StringList</source>
- <translation>Sztring lista</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+28"/>
+ <location/>
<source>New String</source>
- <translation>Új Sztring</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>&amp;New</source>
- <translation>&amp;Új</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Delete String</source>
- <translation>Sztring törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>&amp;Delete</source>
- <translation>&amp;Törlés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+33"/>
+ <location/>
<source>&amp;Value:</source>
- <translation>&amp;Érték:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+38"/>
+ <location/>
<source>Move String Up</source>
- <translation>Sztring felfelé mozgatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Up</source>
- <translation>Fel</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Move String Down</source>
- <translation>Sztring lefelé mozgatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Down</source>
- <translation>Le</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4653,60 +4640,65 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="-260"/>
<source>None</source>
- <translation>Semmi</translation>
+ <translation type="unfinished">Nincs</translation>
</message>
<message>
<location line="+4"/>
<source>Add a profile</source>
- <translation>Egy profil hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Edit the selected profile</source>
- <translation>A kiválasztott profil szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Delete the selected profile</source>
- <translation>A kiválasztott profil törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+22"/>
<source>Add Profile</source>
- <translation>Profil hozzáadása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>New profile</source>
- <translation>Új profil</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+35"/>
<source>Edit Profile</source>
- <translation>Profil szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+26"/>
<source>Delete Profile</source>
- <translation>Profil törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Would you like to delete the profile &apos;%1&apos;?</source>
- <translation>Törölni szeretné a(z) &apos;%1&apos; profilet?</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+55"/>
<source>Default</source>
- <translation>Alapértelmezett</translation>
+ <translation type="unfinished">Alapértelmezett</translation>
</message>
</context>
<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
- <source>&lt;Filter&gt;</source>
- <translation>&lt;Szűrő&gt;</translation>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+163"/>
+ <source>Filter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Clear text</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4714,12 +4706,12 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
<source>Resource File Changed</source>
- <translation>Erőforrás fájl megváltoztatva</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>The file &quot;%1&quot; has changed outside Designer. Do you want to reload it?</source>
- <translation>A(z) &apos;%1&apos; fájl megváltoztatták a Designer-en kívül. Újra szeretné tölteni?</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -4727,315 +4719,319 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+24"/>
<source>Add form layout row...</source>
- <translation>Űrlap elrendezési sor hozzáadása...</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1322"/>
<source>Edit contents</source>
- <translation>Tartalom szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>F2</source>
- <translation>F2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+774"/>
+ <location line="+775"/>
<source>Insert widget &apos;%1&apos;</source>
- <translation>&apos;%1&apos; widget beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+67"/>
+ <location line="+65"/>
<source>Resize</source>
- <translation>Átméretezés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+218"/>
- <location line="+15"/>
+ <location line="+248"/>
<source>Key Move</source>
- <translation>Kulcs mozgatás</translation>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Key Resize</source>
+ <translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location line="+211"/>
+ <location line="+252"/>
<source>Paste %n action(s)</source>
- <translation>
- <numerusform>%n tevékenység beillesztése</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location line="+2"/>
<source>Paste %n widget(s)</source>
- <translation>
- <numerusform>%n widget beillesztése</numerusform>
+ <translation type="unfinished">
+ <numerusform></numerusform>
</translation>
</message>
<message>
<location line="+1"/>
<source>Paste (%1 widgets, %2 actions)</source>
- <translation>Beillesztés (%1 widget-ek, %2 tevékenységek)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+56"/>
<source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source>
- <translation>Nem lehet beilleszteni a widget-eket. A Designer nem talált egy tárolót sem elrendezés nélküli beillesztéshez.</translation>
+ <translation type="unfinished"></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>A tároló elrendezésének megtörése, ahová be akarja illeszteni, válassza ki ezt a tárolót és aztán illessze e újra.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Paste error</source>
- <translation>Beillesztési hiba</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+181"/>
<source>Raise widgets</source>
- <translation>Widget-ek növelése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Lower widgets</source>
- <translation>Alsó widget-ek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+204"/>
<source>Select Ancestor</source>
- <translation>Ős kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+41"/>
+ <location line="+46"/>
<source>Lay out</source>
- <translation>Elrendezés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+493"/>
+ <location line="+485"/>
<location line="+55"/>
<source>Drop widget</source>
- <translation>Widget ejtése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="-13"/>
<source>A QMainWindow-based form does not contain a central widget.</source>
- <translation>Egy QMainWindow alapú űrlap nem tartalmaz egy központi widget-et.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+393"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+404"/>
<source>Delete &apos;%1&apos;</source>
- <translation>&apos;%1&apos; törlése</translation>
+ <translation type="unfinished">&apos;%1&apos; törlése</translation>
</message>
<message>
<location line="+0"/>
<source>Delete</source>
- <translation>Törlés</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
</context>
<context>
<name>qdesigner_internal::FormWindowManager</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+364"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+365"/>
<source>Cu&amp;t</source>
- <translation>&amp;Kivágás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Cuts the selected widgets and puts them on the clipboard</source>
- <translation>A kiválaszott widget-ek kivágása és vágólapra helyezése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>&amp;Copy</source>
- <translation>&amp;Másolás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Copies the selected widgets to the clipboard</source>
- <translation>A kiválasztott widget-ek vágólapra másolása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>&amp;Paste</source>
- <translation>&amp;Beillesztés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Pastes the clipboard&apos;s contents</source>
- <translation>A vágólap tartalmának beillesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>&amp;Delete</source>
- <translation>&amp;Törlés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Deletes the selected widgets</source>
- <translation>A kiválasztott widget-ek törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Select &amp;All</source>
- <translation>Az &amp;összes kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Selects all widgets</source>
- <translation>Az összes widget kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Bring to &amp;Front</source>
- <translation>&amp;Előre hozás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+1"/>
<source>Raises the selected widgets</source>
- <translation>A kiválaszott widget-ek növelése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Send to &amp;Back</source>
- <translation>&amp;Visszaküldés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+1"/>
<source>Lowers the selected widgets</source>
- <translation>Alsó kiválasztott widget-ek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Adjust &amp;Size</source>
- <translation>&amp;Méret igazítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Adjusts the size of the selected widget</source>
- <translation>A kiválasztott widget méretének igazítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
- <translation>Elrendezés &amp;Horizontálisan</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lays out the selected widgets horizontally</source>
- <translation>A kiválaszott widget-ek horizontális elrendezése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>Lay Out &amp;Vertically</source>
- <translation>Elrendezés &amp;vertikálisan</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lays out the selected widgets vertically</source>
- <translation>A kiválaszott widget-ek vertikális elrendezése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Lay Out in a &amp;Form Layout</source>
- <translation>Elrendezés egy &amp;Űrlap elrendezésben</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lays out the selected widgets in a form layout</source>
- <translation>A kiválaszott widget-ek elrendezése egy űrlap elrendezésben</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Lay Out in a &amp;Grid</source>
- <translation>Elrendezés egy &amp;rácsban</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lays out the selected widgets in a grid</source>
- <translation>A kiválasztott widget-ek elrendezése egy rácsban</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Lay Out Horizontally in S&amp;plitter</source>
- <translation>Elrendezés Horizontálisan a &amp;csúszkában</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lays out the selected widgets horizontally in a splitter</source>
- <translation>A kiválasztott widget-ek horizontális elrendezése egy csúszkában</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Lay Out Vertically in Sp&amp;litter</source>
- <translation>Elrendezés vertikálisan egy &amp;csúszkában</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Lays out the selected widgets vertically in a splitter</source>
- <translation>A kiválaszott widget-ek vertikális elrendezése egy csúszkában</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>&amp;Break Layout</source>
- <translation>Elrendezés &amp;törése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Breaks the selected layout</source>
- <translation>A kiválaszott elrendezés törése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Si&amp;mplify Grid Layout</source>
- <translation>Egy&amp;szerűsített rács elrendezés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Removes empty columns and rows</source>
- <translation>Üres oszlopok és sorok eltávolítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>&amp;Preview...</source>
- <translation>&amp;Előnézet...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Preview current form</source>
- <translation>Aktuális űrlap előnézet</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+15"/>
<source>Form &amp;Settings...</source>
- <translation>Űrlap &amp;beállítások...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+94"/>
<source>Break Layout</source>
- <translation>Elrendezés törése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+26"/>
<source>Adjust Size</source>
- <translation>Méret igazítása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+43"/>
<source>Could not create form preview</source>
<comment>Title of warning message box</comment>
- <translation>Nem sikerült létrehozni az űrlap előnézetet</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+341"/>
<source>Form Settings - %1</source>
- <translation>Űrlap beállítások - %1</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5043,51 +5039,50 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
<source>None</source>
- <translation>Semmi</translation>
+ <translation type="unfinished">Nincs</translation>
</message>
<message>
<location line="+1"/>
<source>Device Profile: %1</source>
- <translation>Eszköz profil: %1</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::GridPanel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="+13"/>
+ <location filename="../tools/designer/src/lib/shared/gridpanel.ui"/>
<source>Form</source>
- <translation>Űrlap</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>Grid</source>
- <translation>Rács</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>Visible</source>
- <translation>Látható</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Grid &amp;X</source>
- <translation>Rács &amp;X</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+26"/>
- <location line="+57"/>
+ <location/>
<source>Snap</source>
- <translation>Bepattintás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-48"/>
+ <location/>
<source>Reset</source>
- <translation>Újraindítás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>Grid &amp;Y</source>
- <translation>Rács &amp;Y</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5095,7 +5090,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+82"/>
<source>Change title...</source>
- <translation>Cím változtatása...</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5103,7 +5098,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="-58"/>
<source>Insert HTML entity</source>
- <translation>HTML entitás beszúrása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5111,92 +5106,92 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-24"/>
<source>The pixmap file &apos;%1&apos; cannot be read.</source>
- <translation>A(z) &apos;%1&apos; pixmap fájlt nem lehet olvasni.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The file &apos;%1&apos; does not appear to be a valid pixmap file: %2</source>
- <translation>A(z) &apos;%1&apos; fájlt nem egy érvényes pixmap fájl: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>The file &apos;%1&apos; could not be read: %2</source>
- <translation>A(z) &apos;%1&apos; fájlt nem sikerült olvasni: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+33"/>
<source>Choose a Pixmap</source>
- <translation>Egy pixmap kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Pixmap Read Error</source>
- <translation>Pixmap olvasási hiba</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+54"/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
<message>
<location line="+6"/>
<source>Normal Off</source>
- <translation>Normál ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Normal On</source>
- <translation>Normál be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Disabled Off</source>
- <translation>Tiltás ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Disabled On</source>
- <translation>Tiltás be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Active Off</source>
- <translation>Aktív ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Active On</source>
- <translation>Aktív be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Selected Off</source>
- <translation>Kiválaszott ki</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Selected On</source>
- <translation>Kiválaszott be</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+8"/>
<source>Choose Resource...</source>
- <translation>Erőforrás kiválasztása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Choose File...</source>
- <translation>Fájl kiválasztása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Reset</source>
- <translation>Újraindítás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Reset All</source>
- <translation>Az összes újraindítása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5204,58 +5199,58 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/>
<source>Properties &amp;&lt;&lt;</source>
- <translation>Tulajdonságok &amp;&lt;&lt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="+143"/>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui"/>
<location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+2"/>
<source>Properties &amp;&gt;&gt;</source>
- <translation>Tulajdonságok &amp;&gt;&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="-75"/>
+ <location/>
<source>Items List</source>
- <translation>Elem lista</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
+ <location/>
<source>New Item</source>
- <translation>Új elem</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>&amp;New</source>
- <translation>&amp;Új</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Delete Item</source>
- <translation>Elem törlése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>&amp;Delete</source>
- <translation>&amp;Törlés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location/>
<source>Move Item Up</source>
- <translation>Elem mozgatása felfelé</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>U</source>
- <translation>U</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Move Item Down</source>
- <translation>Elem mozgatása lefelé</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>D</source>
- <translation>D</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5263,12 +5258,12 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+85"/>
<source>Change rich text...</source>
- <translation>Gazdag szöveg választása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Change plain text...</source>
- <translation>Egyszerű szöveg választása...</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5276,7 +5271,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-343"/>
<source>Choose Resource</source>
- <translation>Erőforrás kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5284,7 +5279,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+80"/>
<source>Change text...</source>
- <translation>Szöveg kiválasztása...</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5292,17 +5287,17 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+69"/>
<source>New Item</source>
- <translation>Új elem</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+32"/>
<source>Edit List Widget</source>
- <translation>Widget szerkesztési lista</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+19"/>
<source>Edit Combobox</source>
- <translation>Combobox szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5310,12 +5305,12 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+67"/>
<source>Edit Items...</source>
- <translation>Elemek szerkesztése...</translation>
+ <translation type="unfinished">Elem szerkesztése...</translation>
</message>
<message>
<location line="+38"/>
<source>Change List Contents</source>
- <translation>Tartalom változtatási lista</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5323,22 +5318,22 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+118"/>
<source>Next Subwindow</source>
- <translation>Új alablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Previous Subwindow</source>
- <translation>Előző alablak</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Tile</source>
- <translation>Cserép</translation>
+ <translation type="unfinished">Mozaikszerű</translation>
</message>
<message>
<location line="+1"/>
<source>Cascade</source>
- <translation>Kaszkád</translation>
+ <translation type="unfinished">Lépcsőzetes</translation>
</message>
</context>
<context>
@@ -5346,7 +5341,7 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+56"/>
<source>Remove</source>
- <translation>Eltávolítás</translation>
+ <translation type="unfinished">Törlés</translation>
</message>
</context>
<context>
@@ -5354,51 +5349,50 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+264"/>
<source>Morph into</source>
- <translation>Morph into</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::NewActionDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="+46"/>
+ <location filename="../tools/designer/src/lib/shared/newactiondialog.ui"/>
<source>New Action...</source>
- <translation>Új tevékenység...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location/>
<source>&amp;Text:</source>
- <translation>&amp;Szöveg:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location/>
<source>Object &amp;name:</source>
- <translation>Objektum &amp;név:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>&amp;Icon:</source>
- <translation>&amp;Ikon:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+30"/>
+ <location/>
<source>Shortcut:</source>
- <translation>Rövidebb út:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+14"/>
+ <location/>
<source>Checkable:</source>
- <translation>Ellenőrizhető:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>ToolTip:</source>
- <translation>Eszköz tipp:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
- <location line="+21"/>
+ <location/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
</context>
<context>
@@ -5406,41 +5400,39 @@ Felül szeretné írni a sablont?</translation>
<message>
<location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
<source>Set Property Name</source>
- <translation>Tulajdonság nevének beállítása</translation>
+ <translation type="unfinished"></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>Az aktuális objektumnak már van egy &apos;%1&apos; nevű tulajdonsága.
-Kérem válasszon másikat, egy egyedülállót.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>The &apos;_q_&apos; prefix is reserved for the Qt library.
Please select another name.</source>
- <translation>Az &apos;_q_&apos; előtag foglalt a Qt könyvtárhoz.
-Kérem válasszon másikat.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui" line="+13"/>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/>
<source>Create Dynamic Property</source>
- <translation>Dinamikus tulajdonság létrehozása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+24"/>
+ <location/>
<source>Property Name</source>
- <translation>Tulajdonság Neve</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>horizontalSpacer</source>
- <translation>horizontálisTávtartó</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+24"/>
+ <location/>
<source>Property Type</source>
- <translation>Tulajdonság Típusa</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5448,83 +5440,83 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+104"/>
<source>Default size</source>
- <translation>Alapértelmezett méret</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>QVGA portrait (240x320)</source>
- <translation>QVGA portré (240x320)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>QVGA landscape (320x240)</source>
- <translation>QVGA tájkép (320x240)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>VGA portrait (480x640)</source>
- <translation>VGA portré (480x640)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>VGA landscape (640x480)</source>
- <translation>VGA tájkép: (640x480)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+66"/>
<source>Widgets</source>
<extracomment>New Form Dialog Categories</extracomment>
- <translation>Widget-ek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Custom Widgets</source>
- <translation>Egyéni Widget-ek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+18"/>
<source>None</source>
- <translation>Semmi</translation>
+ <translation type="unfinished">Nincs</translation>
</message>
<message>
<location line="+57"/>
<source>Error loading form</source>
- <translation>Hiba történt az űrlap betöltése közben</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+244"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
- <translation>Nem lehet megnyitni a(z) &apos;%1&apos; űrlap sablon fájlt: %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+67"/>
<source>Internal error: No template selected.</source>
- <translation>Belső hiba: Nincsen sablon kiválasztva.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/newformwidget.ui" line="+82"/>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.ui"/>
<source>0</source>
- <translation>0</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<source>Choose a template for a preview</source>
- <translation>Válasszon egy sablont egy előnézetre</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+44"/>
+ <location/>
<source>Embedded Design</source>
- <translation>Beágyazott tervezés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>Device:</source>
- <translation>Eszköz:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Screen Size:</source>
- <translation>Képernyő méret:</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5532,53 +5524,50 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+92"/>
<source>Add</source>
- <translation>Hozzáadás</translation>
+ <translation type="unfinished">Hozzáadás</translation>
</message>
<message>
<location line="+2"/>
<source>New Promoted Class</source>
- <translation>Új támogatott osztály</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+15"/>
<source>Base class name:</source>
- <translation>Alap osztály név:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Promoted class name:</source>
- <translation>Támogatott osztály neve:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Header file:</source>
- <translation>Fejállomány:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Global include</source>
- <translation>Globális include</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Reset</source>
- <translation>Újraindítás</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::ObjectInspector</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+754"/>
- <source>&amp;Find in Text...</source>
- <translation>&amp;Keresés a szövegben...</translation>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+316"/>
+ <source>Change Current Page</source>
+ <translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>qdesigner_internal::ObjectInspector::ObjectInspectorPrivate</name>
<message>
- <location line="-438"/>
- <source>Change Current Page</source>
- <translation>Aktuális lap megváltoztatása</translation>
+ <location line="+438"/>
+ <source>&amp;Find in Text...</source>
+ <translation type="unfinished">&amp;Keresés a szövegben...</translation>
</message>
</context>
<context>
@@ -5586,80 +5575,80 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+109"/>
<source>Index %1 (%2)</source>
- <translation>Index %1 (%2)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>%1 %2</source>
- <translation>%1 %2</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.ui" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.ui"/>
<source>Change Page Order</source>
- <translation>Lap sorrend megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Page Order</source>
- <translation>Lap sorrend</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+57"/>
+ <location/>
<source>Move page up</source>
- <translation>Lap mozgatása felfelé</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Move page down</source>
- <translation>Lap mozgatása lefelé</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>qdesigner_internal::PaletteEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="+61"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui"/>
<source>Edit Palette</source>
- <translation>Paletta szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+24"/>
+ <location/>
<source>Tune Palette</source>
- <translation>Paletta finomhangolása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+37"/>
+ <location/>
<source>Show Details</source>
- <translation>Részletek megjelenítése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Compute Details</source>
- <translation>Számítási részletek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Quick</source>
- <translation>Gyors</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>Preview</source>
- <translation>Előnézet</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>Disabled</source>
- <translation>Tiltott</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Inactive</source>
- <translation>Inaktív</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Active</source>
- <translation>Aktív</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5667,7 +5656,7 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+57"/>
<source>Change Palette</source>
- <translation>Paletta megváltoztatása</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5675,22 +5664,22 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+374"/>
<source>Color Role</source>
- <translation>Szín szabály</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Active</source>
- <translation>Aktív</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Inactive</source>
- <translation>Inaktív</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Disabled</source>
- <translation>Tiltott</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5698,28 +5687,28 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-1541"/>
<source>Choose Resource...</source>
- <translation>Erőforrás kiválasztása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Choose File...</source>
- <translation>Fájl kiválasztása...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Copy Path</source>
- <translation>Útvonal kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Paste Path</source>
- <translation>Útvonal beillesztése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<location line="+16"/>
<source>...</source>
- <translation>...</translation>
+ <translation type="unfinished">...</translation>
</message>
</context>
<context>
@@ -5727,7 +5716,7 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+65"/>
<source>Edit text</source>
- <translation>Szöveg szerkesztése</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5735,37 +5724,37 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="+72"/>
<source>Components</source>
- <translation>Komponensek</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<source>Plugin Information</source>
- <translation>Beépülő modul információ</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Refresh</source>
- <translation>Felfrissítés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Scan for newly installed custom widget plugins.</source>
- <translation>Újonnan telepített egyéni widget beépülő modulok letapogatása.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+48"/>
<source>Qt Designer couldn&apos;t find any plugins</source>
- <translation>Qt Designer nem talált egyetlen beépülő modult sem</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Qt Designer found the following plugins</source>
- <translation>Qt Designer a következő beépülő modulokat találta</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+55"/>
<source>New custom widget plugins have been found.</source>
- <translation>Új egyéni widget betöltő modul talált.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5773,7 +5762,7 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
<source>%1 Style</source>
- <translation>%1 Stílus</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5781,52 +5770,48 @@ Kérem válasszon másikat.</translation>
<message>
<location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+139"/>
<source>Default</source>
- <translation>Alapértelmezett</translation>
+ <translation type="unfinished">Alapértelmezett</translation>
</message>
<message>
<location line="+22"/>
<source>None</source>
- <translation>Semmi</translation>
+ <translation type="unfinished">Nincs</translation>
</message>
<message>
<location line="+6"/>
<source>Browse...</source>
- <translation>Böngészés...</translation>
+ <translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate</name>
<message>
<location line="+118"/>
<source>Load Custom Device Skin</source>
- <translation>Egyéni eszköz szkin betöltése</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>All QVFB Skins (*.%1)</source>
- <translation>Az összes QVFB szkin (*.%1)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<source>%1 - Duplicate Skin</source>
- <translation>%1 - Duplikált szkin</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>The skin &apos;%1&apos; already exists.</source>
- <translation>A(z) &apos;%1&apos; szkin már létezik.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+14"/>
<source>%1 - Error</source>
- <translation>%1 - Hiba</translation>
+ <translation type="unfinished">%1 - Hiba</translation>
</message>
<message>
<location line="+1"/>
<source>%1 is not a valid skin directory:
%2</source>
- <translation>%1 nem egy érvényes szkin könyvtár:
-%2</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5851,7 +5836,7 @@ Kérem válasszon másikat.</translation>
<message>
<location line="+1"/>
<source>&amp;Close</source>
- <translation>&amp;Bezárás</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -5875,57 +5860,57 @@ ate the goose who was loose.</source>
<context>
<name>qdesigner_internal::PreviewWidget</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="+61"/>
+ <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui"/>
<source>Preview Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location/>
<source>LineEdit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location/>
<source>ComboBox</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<source>PushButton</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+58"/>
+ <location/>
<source>ButtonGroup2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>CheckBox1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>CheckBox2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>ButtonGroup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>RadioButton1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>RadioButton2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>RadioButton3</source>
<translation type="unfinished"></translation>
</message>
@@ -5935,7 +5920,7 @@ ate the goose who was loose.</source>
<message>
<location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+17"/>
<source>Name</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Név</translation>
</message>
<message>
<location line="+1"/>
@@ -5984,7 +5969,7 @@ ate the goose who was loose.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+183"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+231"/>
<source>Add Dynamic Property...</source>
<translation type="unfinished"></translation>
</message>
@@ -6014,7 +5999,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+50"/>
+ <location line="+45"/>
<source>String...</source>
<translation type="unfinished"></translation>
</message>
@@ -6034,7 +6019,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+533"/>
+ <location line="+539"/>
<source>Object: %1
Class: %2</source>
<translation type="unfinished"></translation>
@@ -6073,7 +6058,7 @@ Class: %2</source>
<message>
<location line="+17"/>
<source>%1 - Error</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">%1 - Hiba</translation>
</message>
</context>
<context>
@@ -6296,7 +6281,7 @@ Class: %2</source>
<message>
<location line="+1"/>
<source>Value</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Érték</translation>
</message>
<message>
<location line="+22"/>
@@ -6362,7 +6347,7 @@ Class: %2</source>
<message>
<location line="-302"/>
<source>Bold</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Félkövér</translation>
</message>
<message>
<location line="+1"/>
@@ -6372,7 +6357,7 @@ Class: %2</source>
<message>
<location line="+5"/>
<source>Italic</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Dőlt</translation>
</message>
<message>
<location line="+1"/>
@@ -6382,7 +6367,7 @@ Class: %2</source>
<message>
<location line="+5"/>
<source>Underline</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Aláhúzott</translation>
</message>
<message>
<location line="+1"/>
@@ -6506,7 +6491,7 @@ Class: %2</source>
<message>
<location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+81"/>
<source>Remove</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Törlés</translation>
</message>
</context>
<context>
@@ -6603,49 +6588,49 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui" line="+97"/>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+218"/>
- <source>Properties &amp;&gt;&gt;</source>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+67"/>
+ <source>New Column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-44"/>
- <source>Edit Table Widget</source>
+ <location line="+3"/>
+ <source>New Row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
- <source>&amp;Items</source>
+ <location line="+8"/>
+ <source>&amp;Columns</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
- <source>Table Items</source>
+ <location line="+1"/>
+ <source>&amp;Rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="-151"/>
- <source>New Column</source>
+ <location line="+137"/>
+ <source>Properties &amp;&lt;&lt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
- <source>New Row</source>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+2"/>
+ <source>Properties &amp;&gt;&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
- <source>&amp;Columns</source>
+ <location/>
+ <source>Edit Table Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
- <source>&amp;Rows</source>
+ <location/>
+ <source>&amp;Items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+137"/>
- <source>Properties &amp;&lt;&lt;</source>
+ <location/>
+ <source>Table Items</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -6654,7 +6639,7 @@ Class: %2</source>
<message>
<location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+64"/>
<source>Edit Items...</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Elem szerkesztése...</translation>
</message>
</context>
<context>
@@ -6665,20 +6650,19 @@ Class: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui" line="+13"/>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Additional Template Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
- <location line="+7"/>
+ <location/>
<source>...</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">...</translation>
</message>
</context>
<context>
@@ -6719,7 +6703,7 @@ Class: %2</source>
<message>
<location line="+5"/>
<source>...</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">...</translation>
</message>
<message>
<location line="+118"/>
@@ -6778,13 +6762,13 @@ Class: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="+101"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
<location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+53"/>
<source>New Item</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+19"/>
<source>New Subitem</source>
<translation type="unfinished"></translation>
@@ -6795,88 +6779,88 @@ Class: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="+86"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
<location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+2"/>
<source>Properties &amp;&gt;&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-144"/>
+ <location/>
<source>Edit Tree Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>&amp;Items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+24"/>
+ <location/>
<source>Tree Items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location/>
<source>1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>&amp;New</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>New &amp;Subitem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Delete Item</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location/>
<source>Move Item Left (before Parent Item)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>L</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Move Item Right (as a First Subitem of the Next Sibling Item)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>R</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Move Item Up</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>U</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Move Item Down</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>D</source>
<translation type="unfinished"></translation>
</message>
@@ -6886,7 +6870,7 @@ Class: %2</source>
<message>
<location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+63"/>
<source>Edit Items...</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Elem szerkesztése...</translation>
</message>
</context>
<context>
@@ -6932,7 +6916,7 @@ Class: %2</source>
<message>
<location line="+15"/>
<source>Remove</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Törlés</translation>
</message>
<message>
<location line="+2"/>
@@ -6995,12 +6979,12 @@ This indicates an inconsistency in the ui-file.</source>
<message>
<location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="-49"/>
<source>Next</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Következő</translation>
</message>
<message>
<location line="+1"/>
<source>Back</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Vissza</translation>
</message>
</context>
<context>
diff --git a/translations/designer_ru.ts b/translations/designer_ru.ts
index 412be47..72f3532 100644
--- a/translations/designer_ru.ts
+++ b/translations/designer_ru.ts
@@ -255,7 +255,7 @@
<translation>Пересекающиеся диагонали</translation>
</message>
<message>
- <location line="+83"/>
+ <location line="+93"/>
<source>Style</source>
<translation>Стиль</translation>
</message>
@@ -611,28 +611,28 @@
<translation>Вставить меню</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1213"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1225"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
- <translation type="unfinished">Изменено &apos;%1&apos; у &apos;%2&apos;</translation>
+ <translation>Изменено &apos;%1&apos; у &apos;%2&apos;</translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Changed &apos;%1&apos; of %n objects</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Изменено &apos;%1&apos; у %n объекта</numerusform>
<numerusform>Изменено &apos;%1&apos; у %n объектов</numerusform>
<numerusform>Изменено &apos;%1&apos; у %n объектов</numerusform>
</translation>
</message>
<message>
- <location line="+76"/>
+ <location line="+84"/>
<source>Reset &apos;%1&apos; of &apos;%2&apos;</source>
- <translation type="unfinished">Восстановлено &apos;%1&apos; у &apos;%2&apos;</translation>
+ <translation>Восстановлено &apos;%1&apos; у &apos;%2&apos;</translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Reset &apos;%1&apos; of %n objects</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Восстановлено &apos;%1&apos; у %n объекта</numerusform>
<numerusform>Восстановлено &apos;%1&apos; у %n объектов</numerusform>
<numerusform>Восстановлено &apos;%1&apos; у %n объектов</numerusform>
@@ -641,12 +641,12 @@
<message>
<location line="+89"/>
<source>Add dynamic property &apos;%1&apos; to &apos;%2&apos;</source>
- <translation type="unfinished">Добавлено динамическое свойство &apos;%1&apos; &apos;%2&apos;</translation>
+ <translation>Добавлено динамическое свойство &apos;%1&apos; &apos;%2&apos;</translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Add dynamic property &apos;%1&apos; to %n objects</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Добавлено динамическое свойство &apos;%1&apos; %n объекту</numerusform>
<numerusform>Добавлено динамическое свойство &apos;%1&apos; %n объектам</numerusform>
<numerusform>Добавлено динамическое свойство &apos;%1&apos; %n объектам</numerusform>
@@ -655,12 +655,12 @@
<message>
<location line="+86"/>
<source>Remove dynamic property &apos;%1&apos; from &apos;%2&apos;</source>
- <translation type="unfinished">Удалено динамическое свойство &apos;%1&apos; у &apos;%2&apos;</translation>
+ <translation>Удалено динамическое свойство &apos;%1&apos; у &apos;%2&apos;</translation>
</message>
<message numerus="yes">
<location line="+3"/>
<source>Remove dynamic property &apos;%1&apos; from %n objects</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Удалено динамическое свойство &apos;%1&apos; у %n объекта</numerusform>
<numerusform>Удалено динамическое свойство &apos;%1&apos; у %n объектов</numerusform>
<numerusform>Удалено динамическое свойство &apos;%1&apos; у %n объектов</numerusform>
@@ -742,7 +742,7 @@
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+449"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+446"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
@@ -1074,8 +1074,7 @@
<message>
<location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui"/>
<source>Add Form Layout Row</source>
- <translatorcomment>нелепица какая-то</translatorcomment>
- <translation type="unfinished">Добавление строки компоновки компоновщика формы</translation>
+ <translation type="unfinished">Добавление строки компоновщика формы</translation>
</message>
<message>
<location/>
@@ -1111,7 +1110,7 @@
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1701"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1754"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Неожиданный элемент &lt;%1&gt;</translation>
</message>
@@ -1204,7 +1203,7 @@
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+121"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
<translation>Главное</translation>
@@ -1584,7 +1583,7 @@ Script: %3</source>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+128"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+130"/>
<source>Saved %1.</source>
<translation>Сохранено %1.</translation>
</message>
@@ -1614,24 +1613,24 @@ Script: %3</source>
<translation>Настройки...</translation>
</message>
<message>
- <location line="+298"/>
+ <location line="+322"/>
<source>Clear &amp;Menu</source>
<translation>Очистить &amp;меню</translation>
</message>
<message>
- <location line="-233"/>
+ <location line="-247"/>
<source>CTRL+SHIFT+S</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+127"/>
<source>CTRL+R</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+18"/>
<source>CTRL+M</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+31"/>
@@ -1678,7 +1677,7 @@ Script: %3</source>
<translation>UI файлы Qt Designer (*.%1);;Все файлы (*)</translation>
</message>
<message>
- <location line="-620"/>
+ <location line="-644"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 уже существует.
@@ -1690,7 +1689,7 @@ Do you want to replace it?</source>
<translation>Дополнительные шрифты...</translation>
</message>
<message>
- <location line="+303"/>
+ <location line="+327"/>
<source>&amp;Recent Forms</source>
<translation>&amp;Последние формы</translation>
</message>
@@ -1753,7 +1752,7 @@ Do you want to update the file location or generate a new form?</source>
<translation>&amp;Закрыть предпросмотр</translation>
</message>
<message>
- <location line="-905"/>
+ <location line="-929"/>
<source>&amp;New...</source>
<translation>&amp;Новый...</translation>
</message>
@@ -1784,12 +1783,12 @@ Do you want to update the file location or generate a new form?</source>
</message>
<message>
<location line="+1"/>
- <location line="+901"/>
+ <location line="+925"/>
<source>&amp;Close</source>
<translation>&amp;Закрыть</translation>
</message>
<message>
- <location line="-900"/>
+ <location line="-924"/>
<source>Save &amp;Image...</source>
<translation>Сохранить &amp;Изображение...</translation>
</message>
@@ -1804,12 +1803,12 @@ Do you want to update the file location or generate a new form?</source>
<translation>Показать &amp;код...</translation>
</message>
<message>
- <location line="+68"/>
+ <location line="+78"/>
<source>ALT+CTRL+S</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
- <location line="+356"/>
+ <location line="+370"/>
<location line="+248"/>
<source>Save Form As</source>
<translation>Сохранить форму как</translation>
@@ -2059,17 +2058,17 @@ Would you like to retry?</source>
<message>
<location line="+5"/>
<source>A required attribute (&apos;%1&apos;) is missing.</source>
- <translation type="unfinished">Отсутствует необходимый атрибут (&apos;%1&apos;).</translation>
+ <translation>Отсутствует необходимый атрибут (&apos;%1&apos;).</translation>
</message>
<message>
<location line="+38"/>
<source>An invalid property specification (&apos;%1&apos;) was encountered. Supported types: %2</source>
- <translation type="unfinished">Обнаружена неверная спецификация (&apos;%1&apos;) свойства. Поддерживаются типы: %2</translation>
+ <translation>Обнаружена неверная спецификация (&apos;%1&apos;) свойства. Поддерживаются типы: %2</translation>
</message>
<message>
<location line="+20"/>
<source>&apos;%1&apos; is not a valid string property specification.</source>
- <translation type="unfinished">&apos;%1&apos; не является корректной спецификацией строкового свойства.</translation>
+ <translation>&apos;%1&apos; не является корректной спецификацией строкового свойства.</translation>
</message>
<message>
<location line="+40"/>
@@ -2090,7 +2089,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+754"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+758"/>
<source>Dynamic Properties</source>
<translation>Динамические свойства</translation>
</message>
@@ -2103,14 +2102,14 @@ Would you like to retry?</source>
<translation>Компоновка типа &apos;%1&apos; не поддерживается, заменена на компоновку сеткой.</translation>
</message>
<message>
- <location line="+243"/>
+ <location line="+239"/>
<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>Контейнерное расширение виджета &apos;%1&apos; (%2) возвратило виджет, который не управляется Qt Designer &apos;%3&apos; (%4), при запросе страницы №%5.
Страницы контейнера должны быть добавлены указанием их в XML, который возвращается методом domXml() пользовательского виджета.</translation>
</message>
<message>
- <location line="+599"/>
+ <location line="+545"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
<translation>Неожиданный элемент &lt;%1&gt;</translation>
@@ -2212,21 +2211,21 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>Панель инструментов</translation>
</message>
<message>
- <location line="+465"/>
+ <location line="+466"/>
<source>Save Forms?</source>
<translation>Сохранить форму?</translation>
</message>
<message numerus="yes">
<location line="+1"/>
<source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
- <translation type="unfinished">
- <numerusform>Есть %n форма с несохранёнными изменениями. Показать изменения перед выходом?</numerusform>
- <numerusform>Есть %n формы с несохранёнными изменениями. Показать изменения перед выходом?</numerusform>
- <numerusform>Есть %n форм с несохранёнными изменениями. Показать изменения перед выходом?</numerusform>
+ <translation>
+ <numerusform>Имеется %n форма с несохранёнными изменениями. Желаете просмотреть изменения перед выходом?</numerusform>
+ <numerusform>Имеется %n формы с несохранёнными изменениями. Желаете просмотреть изменения перед выходом?</numerusform>
+ <numerusform>Имеется %n форм с несохранёнными изменениями. Желаете просмотреть изменения перед выходом?</numerusform>
</translation>
</message>
<message>
- <location line="-495"/>
+ <location line="-496"/>
<source>&amp;View</source>
<translation>&amp;Вид</translation>
</message>
@@ -2241,9 +2240,9 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>Панель виджетов</translation>
</message>
<message>
- <location line="+292"/>
+ <location line="+293"/>
<source>If you do not review your documents, all your changes will be lost.</source>
- <translation type="unfinished">Если вы не пересмотрите документы, то все ваши изменения будут потеряны.</translation>
+ <translation type="unfinished">Если не просматривать изменения, все изменения будут потеряны.</translation>
</message>
<message>
<location line="+1"/>
@@ -2258,7 +2257,7 @@ Container pages should only be added by specifying them in XML returned by the d
<message>
<location line="+95"/>
<source>Backup Information</source>
- <translation type="unfinished">Информация о резервировании</translation>
+ <translation type="unfinished">Информация о резервированых копиях</translation>
</message>
<message>
<location line="+1"/>
@@ -2273,7 +2272,7 @@ Container pages should only be added by specifying them in XML returned by the d
<message>
<location line="+46"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; is not a valid Designer UI file.</source>
- <translation type="unfinished">Файл &lt;b&gt;%1&lt;/b&gt; не является корректным UI файлом Qt Designer.</translation>
+ <translation>Файл &lt;b&gt;%1&lt;/b&gt; не является корректным UI файлом Qt Designer.</translation>
</message>
</context>
<context>
@@ -2322,7 +2321,7 @@ Container pages should only be added by specifying them in XML returned by the d
<message>
<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>Значение &apos;%1&apos; перечисляемого типа некорректно. Будет использовано значение &apos;%2&apos;.</translation>
+ <translation>Значение &apos;%1&apos; перечисляемого типа некорректно. Будет использовано значение по умолчанию &apos;%2&apos;.</translation>
</message>
<message>
<location line="+14"/>
@@ -2466,13 +2465,13 @@ Container pages should only be added by specifying them in XML returned by the d
<location line="+10"/>
<location line="+25"/>
<source>True</source>
- <translation type="unfinished">Вкл.</translation>
+ <translation>Вкл.</translation>
</message>
<message>
<location line="-25"/>
<location line="+25"/>
<source>False</source>
- <translation type="unfinished">Выкл.</translation>
+ <translation>Выкл.</translation>
</message>
</context>
<context>
@@ -2480,12 +2479,12 @@ Container pages should only be added by specifying them in XML returned by the d
<message>
<location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1507"/>
<source>True</source>
- <translation type="unfinished">Вкл.</translation>
+ <translation>Вкл.</translation>
</message>
<message>
<location line="+1"/>
<source>False</source>
- <translation type="unfinished">Выкл.</translation>
+ <translation>Выкл.</translation>
</message>
</context>
<context>
@@ -3503,7 +3502,7 @@ to
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+566"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+567"/>
<source>Size: %1 x %2
%3</source>
<translation>Размер: %1 x %2
@@ -3528,7 +3527,7 @@ to
<context>
<name>QtResourceViewDialog</name>
<message>
- <location line="+250"/>
+ <location line="+252"/>
<source>Select Resource</source>
<translation>Выбрать ресурс</translation>
</message>
@@ -3915,6 +3914,26 @@ Do you want overwrite the template?</source>
</message>
<message>
<location line="+6"/>
+ <source>File</source>
+ <translation type="unfinished">Файл</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Edit</source>
+ <translation type="unfinished">Правка</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Tools</source>
+ <translation type="unfinished">Инструменты</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Form</source>
+ <translation type="unfinished">Форма</translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>Toolbars</source>
<translation>Панели инструментов</translation>
</message>
@@ -3939,7 +3958,7 @@ Do you want overwrite the template?</source>
<message>
<location line="+2"/>
<source>%1&lt;br/&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</source>
- <translation type="unfinished">%1&lt;br/&gt;Copyright (C) 2010 Корпорация Nokia и/или её дочерние подразделения.</translation>
+ <translation>%1&lt;br/&gt;Copyright (C) 2010 Корпорация Nokia и/или её дочерние подразделения.</translation>
</message>
</context>
<context>
@@ -4424,38 +4443,38 @@ Do you want overwrite the template?</source>
<location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+647"/>
<location line="+6"/>
<source>AlignLeft</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="-5"/>
<source>AlignHCenter</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>AlignRight</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>AlignJustify</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+9"/>
<source>AlignTop</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<location line="+4"/>
<source>AlignVCenter</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="-3"/>
<source>AlignBottom</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+565"/>
@@ -4708,9 +4727,14 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
- <source>&lt;Filter&gt;</source>
- <translation>&lt;Фильтр&gt;</translation>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+163"/>
+ <source>Filter</source>
+ <translation>Фильтр</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Clear text</source>
+ <translation>Очистить текст</translation>
</message>
</context>
<context>
@@ -4737,33 +4761,37 @@ 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"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1322"/>
<source>Edit contents</source>
<translation>Изменить содержимое</translation>
</message>
<message>
<location line="+1"/>
<source>F2</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
- <location line="+774"/>
+ <location line="+775"/>
<source>Insert widget &apos;%1&apos;</source>
<translation>Вставить виджет &apos;%1&apos;</translation>
</message>
<message>
- <location line="+67"/>
+ <location line="+65"/>
<source>Resize</source>
<translation>Изменение размера</translation>
</message>
<message>
- <location line="+218"/>
- <location line="+15"/>
+ <location line="+248"/>
<source>Key Move</source>
<translation type="unfinished">Перемещение клавишей</translation>
</message>
+ <message>
+ <location line="+0"/>
+ <source>Key Resize</source>
+ <translation type="unfinished">Изменение размера клавишей</translation>
+ </message>
<message numerus="yes">
- <location line="+211"/>
+ <location line="+252"/>
<source>Paste %n action(s)</source>
<translation type="unfinished">
<numerusform>Вставлено %n действие</numerusform>
@@ -4801,7 +4829,7 @@ Do you want overwrite the template?</source>
<translation>Ошибка вставки</translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+181"/>
<source>Raise widgets</source>
<translation>Поднятие виджетов</translation>
</message>
@@ -4821,7 +4849,7 @@ Do you want overwrite the template?</source>
<translation>Компоновка</translation>
</message>
<message>
- <location line="+493"/>
+ <location line="+485"/>
<location line="+55"/>
<source>Drop widget</source>
<translation type="unfinished">Вставка виджета</translation>
@@ -4835,7 +4863,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="+393"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+404"/>
<source>Delete &apos;%1&apos;</source>
<translation>Удалить &apos;%1&apos;</translation>
</message>
@@ -4932,7 +4960,7 @@ Do you want overwrite the template?</source>
<message>
<location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
- <translation>Скомпоновать по &amp;горизонтальная</translation>
+ <translation>Скомпоновать по &amp;горизонтали</translation>
</message>
<message>
<location line="+3"/>
@@ -5025,7 +5053,7 @@ Do you want overwrite the template?</source>
<translation>&amp;Настройки формы...</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+94"/>
<source>Break Layout</source>
<translation>Удалить компоновщик</translation>
</message>
@@ -5441,7 +5469,7 @@ Please select another name.</source>
<message>
<location/>
<source>horizontalSpacer</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -5500,7 +5528,7 @@ Please select another name.</source>
<message>
<location line="+244"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
- <translation type="unfinished">Невозможно открыть файл шаблона формы &apos;%1&apos;: %2</translation>
+ <translation>Невозможно открыть файл шаблона формы &apos;%1&apos;: %2</translation>
</message>
<message>
<location line="+67"/>
@@ -5869,7 +5897,7 @@ Please select another name.</source>
<source>The moose in the noose
ate the goose who was loose.</source>
<extracomment>Palette editor background</extracomment>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
</context>
<context>
@@ -5945,12 +5973,12 @@ ate the goose who was loose.</source>
<message>
<location line="+1"/>
<source>Global include</source>
- <translation type="unfinished">Глобальное включение</translation>
+ <translation>Глобальное включение</translation>
</message>
<message>
<location line="+1"/>
<source>Usage</source>
- <translation type="unfinished">Использование</translation>
+ <translation>Использование</translation>
</message>
</context>
<context>
@@ -5984,7 +6012,7 @@ ate the goose who was loose.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+183"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+231"/>
<source>Add Dynamic Property...</source>
<translation>Добавить динамическое свойство...</translation>
</message>
@@ -6014,7 +6042,7 @@ ate the goose who was loose.</source>
<translation type="unfinished">Вид выпадающего списка</translation>
</message>
<message>
- <location line="+50"/>
+ <location line="+45"/>
<source>String...</source>
<translation>Строка...</translation>
</message>
@@ -6034,7 +6062,7 @@ ate the goose who was loose.</source>
<translation>Настроить радактор свойств</translation>
</message>
<message>
- <location line="+533"/>
+ <location line="+539"/>
<source>Object: %1
Class: %2</source>
<translation>Объект: %1
@@ -6372,7 +6400,7 @@ Class: %2</source>
<message>
<location line="+1"/>
<source>CTRL+B</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+5"/>
@@ -6382,7 +6410,7 @@ Class: %2</source>
<message>
<location line="+1"/>
<source>CTRL+I</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+5"/>
@@ -6392,7 +6420,7 @@ Class: %2</source>
<message>
<location line="+1"/>
<source>CTRL+U</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+13"/>
@@ -6495,7 +6523,7 @@ Class: %2</source>
<message>
<location line="+2"/>
<source>F4</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
</context>
<context>
diff --git a/translations/linguist_hu.ts b/translations/linguist_hu.ts
index aaff893..44c1e4a 100644
--- a/translations/linguist_hu.ts
+++ b/translations/linguist_hu.ts
@@ -1,10 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="hu_HU" sourcelanguage="hu">
+<TS version="2.0" language="hu_HU">
+<context>
+ <name></name>
+ <message>
+ <source>(New Entry)</source>
+ <translation type="obsolete">(Új bejegyzés)</translation>
+ </message>
+</context>
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1358"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1366"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
@@ -14,7 +21,7 @@
<message>
<location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
<source>Batch Translation of &apos;%1&apos; - Qt Linguist</source>
- <translation>&apos;%1&apos; Qt Linguist egy adat fordítása</translation>
+ <translation>&apos;%1&apos; kötegelt fordítása - Qt Linguist</translation>
</message>
<message>
<location line="+37"/>
@@ -24,24 +31,24 @@
<message>
<location line="+0"/>
<source>&amp;Cancel</source>
- <translation>&amp;Mégse</translation>
+ <translation>&amp;Mégsem</translation>
</message>
<message>
<location line="+42"/>
<source>Linguist batch translator</source>
- <translation>Linguist köteg fordító</translation>
+ <translation>Linguist kötegelt fordító</translation>
</message>
<message numerus="yes">
<location line="+1"/>
<source>Batch translated %n entries</source>
<translation>
- <numerusform>%n adat belépés lefordítva</numerusform>
+ <numerusform>%n üzenet sikeresen lefordítva</numerusform>
</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/batchtranslation.ui"/>
<source>Qt Linguist - Batch Translation</source>
- <translation>Qt Linguist adat fordítás</translation>
+ <translation>Qt Linguist - Kötegelt fordítás</translation>
</message>
<message>
<location/>
@@ -51,32 +58,40 @@
<message>
<location/>
<source>Set translated entries to finished</source>
- <translation>Lefordított bevitelek befejezettre állítása</translation>
+ <translation>A lefordított szövegek véglegesítése</translation>
</message>
<message>
<location/>
<source>Retranslate entries with existing translation</source>
- <translation>Bevitelek újrafordítása létező fordításokkal</translation>
+ <translation>A módosított bejegyzések fordítása</translation>
+ </message>
+ <message>
+ <source>Note that the modified entries will be reset to unfinished if &apos;Set translated entries to finished&apos; above is unchecked.</source>
+ <translation type="obsolete">A módosított bejegyzések fordítatlanra lesznek állítva, ha az &quot;A lefordított szövegek véglegesítése&quot; nincs bejelölve.</translation>
</message>
<message>
<location/>
<source>Translate also finished entries</source>
- <translation>Befejezett belépéseknek is a lefordítása</translation>
+ <translation>A véglegesített bejegyzéseket is fordítsa</translation>
</message>
<message>
<location/>
<source>Phrase book preference</source>
- <translation>Fázis könyv beállítások</translation>
+ <translation>Kifejezéstár sorrend</translation>
</message>
<message>
<location/>
<source>Move up</source>
- <translation>Felfelé mozgatás</translation>
+ <translation>Fel</translation>
</message>
<message>
<location/>
<source>Move down</source>
- <translation>Lefelé mozgatás</translation>
+ <translation>Le</translation>
+ </message>
+ <message>
+ <source>The batch translator will search through the selected phrase books in the order given above.</source>
+ <translation type="obsolete">A kötegelt fordító ebben a sorrendben keresi végig a kifejezéskönyveket.</translation>
</message>
<message>
<location/>
@@ -86,17 +101,17 @@
<message>
<location/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</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>Ne felejtse el, hogy a módosított belépések újra lesznek indítva befejezetlenre, ha a &apos;lefordított bevitelek befejezettre állítása&apos; felül meg van jelölve</translation>
+ <translation>A módosított bejegyzések fordítatlanra lesznek állítva, ha az &quot;A lefordított szövegek véglegesítése&quot; nincs bejelölve</translation>
</message>
<message>
<location/>
<source>The batch translator will search through the selected phrase books in the order given above</source>
- <translation>A köteg fordító a kiválasztott fázis könyvek között fog keresni, a fent megadott sorrendben</translation>
+ <translation>A kötegelt fordító ebben a sorrendben keresi végig a kifejezéskönyveket</translation>
</message>
</context>
<context>
@@ -104,23 +119,23 @@
<message>
<location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
<source>&lt;qt&gt;Duplicate messages found in &apos;%1&apos;:</source>
- <translation>&lt;qt&gt;Dupliált üzenetek találhatóak a(z) &apos;%1&apos;-ben:</translation>
+ <translation>&lt;qt&gt;Duplikált üzenetek a(z) &apos;%1&apos; fájlban:</translation>
</message>
<message>
<location line="+4"/>
<location line="+8"/>
<source>&lt;p&gt;[more duplicates omitted]</source>
- <translation>&lt;p&gt;[többi duplikáció kihagyása]</translation>
+ <translation>&lt;p&gt;[a többi duplikátum kihagyva]</translation>
</message>
<message>
<location line="-5"/>
<source>&lt;p&gt;* ID: %1</source>
- <translation>&lt;p&gt;* Azonosító: %1</translation>
+ <translation>&lt;p&gt;* ID: %1</translation>
</message>
<message>
<location line="+8"/>
<source>&lt;p&gt;* Context: %1&lt;br&gt;* Source: %2</source>
- <translation>&lt;p&gt;* Szövegösszefüggés: %1&lt;br&gt;* Forrás: %2</translation>
+ <translation>&lt;p&gt;* Környezet: %1&lt;br&gt;* Forrás: %2</translation>
</message>
<message>
<location line="+3"/>
@@ -131,17 +146,18 @@
<location line="+71"/>
<source>Linguist does not know the plural rules for &apos;%1&apos;.
Will assume a single universal form.</source>
- <translation>A Linguist nem ismeri a többes számú szabályokat a &apos;%1&apos;-re. Egy egyszerű univerzális formát fog feltételezni.</translation>
+ <translation>A Linguist nem ismer többesszámképzést a(z) &apos;%1&apos;-hez.
+Az egyes számú általános forma lesz alkalmazva.</translation>
</message>
<message>
<location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
- <translation>Nem lehet létrehozni &apos;%2&apos;: %1</translation>
+ <translation>&apos;%2&apos; létrehozása sikertelen: %1</translation>
</message>
<message>
<location line="+56"/>
<source>Universal Form</source>
- <translation>Univerzális forma</translation>
+ <translation>Általános forma</translation>
</message>
</context>
<context>
@@ -149,32 +165,32 @@ Will assume a single universal form.</source>
<message>
<location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
- <translation>A gyorsítás valószínűleg nélkülözhető a fordításban.</translation>
+ <translation>Felesleges gyorsbillentyű van a fordításban.</translation>
</message>
<message>
<location line="+3"/>
<source>Accelerator possibly missing in translation.</source>
- <translation>A gyorsítás valószínűleg hiányzik a fordításban.</translation>
+ <translation>Egy gyorsbillentyű valószínűleg hiányzik a fordításból.</translation>
</message>
<message>
<location line="+3"/>
<source>Translation does not end with the same punctuation as the source text.</source>
- <translation>A fordítás nem ugyanazzal az írásjellel végződik, mint a forrás szöveg.</translation>
+ <translation>A lefordított mondat nem ugyanazzal az írásjellel végződik, mint a forrás.</translation>
</message>
<message>
<location line="+3"/>
<source>A phrase book suggestion for &apos;%1&apos; was ignored.</source>
- <translation>A(z) &apos;%1&apos;-re tett fáziskönyv ajánlat mellőzve lett.</translation>
+ <translation>A &apos;%1&apos; kifejezéskönyvi ajánlás figyelmen kívül lett hagyva.</translation>
</message>
<message>
<location line="+3"/>
<source>Translation does not refer to the same place markers as in the source text.</source>
- <translation>Nem ugyanazok a hely megjelölők találhatóak a fordításban, mint a forrás szövegben.</translation>
+ <translation>A fordítás nem tartalmazza az összes %n helyfoglalót a szövegből.</translation>
</message>
<message>
<location line="+3"/>
<source>Translation does not contain the necessary %n place marker.</source>
- <translation>A fordítás nem tartalmazza a szükséges %n hely megjelölőket.</translation>
+ <translation>A fordításból kimaradt egy szükséges %n helyfoglaló.</translation>
</message>
<message>
<location line="+3"/>
@@ -187,12 +203,12 @@ Will assume a single universal form.</source>
<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>Ez az ablak engedélyezi, hogy szöveget keresses a fordítás forrás fájlban.</translation>
+ <translation>Itt lehet keresni egy szöveget a fordítás alatt álló fájlban.</translation>
</message>
<message>
<location/>
<source>Type in the text to search for.</source>
- <translation>Gépelje be szövegbe, amit keres..</translation>
+ <translation>A keresendő szöveg helye.</translation>
</message>
<message>
<location/>
@@ -202,68 +218,67 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Source texts are searched when checked.</source>
- <translation>Forrás szövegek keresési ellenőrzéskor.</translation>
+ <translation>A forrásszövegek is keresve lesznek.</translation>
</message>
<message>
<location/>
<source>Translations are searched when checked.</source>
- <translation>Fordítások keresése ellenőrzéskor.</translation>
+ <translation>A fordítások is keresve lesznek.</translation>
</message>
<message>
<location/>
<source>Texts such as &apos;TeX&apos; and &apos;tex&apos; are considered as different when checked.</source>
- <translation>&apos;TeX&apos; és &apos;tex&apos; szövegek különbözőként kezelése bejelöléskor.</translation>
+ <translation>A kis/nagybetű különbseg figyelembe lesz véve.</translation>
</message>
<message>
<location/>
<source>Comments and contexts are searched when checked.</source>
- <translation>Megjegyzések és tartalmak keresése bejelöléskor.</translation>
+ <translation>A megjegyzések és környezetek is keresve lesznek.</translation>
</message>
<message>
<location/>
<source>Find</source>
- <translation>Keresés
-</translation>
+ <translation>Keresés</translation>
</message>
<message>
<location/>
<source>&amp;Find what:</source>
- <translation>Ennek &amp;keresése:</translation>
+ <translation>Amit &amp;keres:</translation>
</message>
<message>
<location/>
<source>&amp;Source texts</source>
- <translation>&amp;Forrás szövegek</translation>
+ <translation>Fo&amp;rrásszöveg</translation>
</message>
<message>
<location/>
<source>&amp;Translations</source>
- <translation>&amp;Fordítások</translation>
+ <translation>For&amp;dítások</translation>
</message>
<message>
<location/>
<source>&amp;Match case</source>
- <translation>&amp;Egyezés</translation>
+ <translation>K&amp;is/nagybetű</translation>
</message>
<message>
<location/>
<source>&amp;Comments</source>
- <translation>&amp;Kommentek</translation>
+ <translation>&amp;Megjegyzések</translation>
</message>
<message>
<location/>
<source>Ignore &amp;accelerators</source>
- <translation>&amp;Gyorsítások mellőzése</translation>
+ <translation>&amp;Gyorsbillentyűk kihagyása</translation>
</message>
<message>
<location/>
<source>Click here to find the next occurrence of the text you typed in.</source>
- <translation>Kattintson ide a begépelt szöveg következő előfordulásának megkereséséhez.</translation>
+ <translation>A következő találat megjelenítéséhez kattintson ide.</translation>
</message>
<message>
<location/>
<source>Find Next</source>
- <translation>Következő keresése</translation>
+ <translation>Következő</translation>
</message>
<message>
<location/>
@@ -273,37 +288,34 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/finddialog.cpp" line="+12"/>
+ <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>
- <translatorcomment>Válassza ki a Szerkesztés/Keresés opciót a menüből vagy nyomja le a Ctrl+F billentyűket a keresési párbeszédablak felugrásához</translatorcomment>
<translation></translation>
</message>
</context>
<context>
<name>FormMultiWidget</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditorwidgets.cpp" line="+296"/>
+ <location filename="../tools/linguist/linguist/messageeditorwidgets.cpp" line="+302"/>
<source>Alt+Delete</source>
<extracomment>translate, but don&apos;t change</extracomment>
- <translatorcomment>fordítsd, de ne változtasd</translatorcomment>
- <translation>ALT+Delete</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Shift+Alt+Insert</source>
<extracomment>translate, but don&apos;t change</extracomment>
- <translatorcomment>Fordítsd, de ne változtasd.</translatorcomment>
- <translation>Shift+Alt+Insert</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Alt+Insert</source>
<extracomment>translate, but don&apos;t change</extracomment>
- <translation>Alt+Insert</translation>
+ <translation></translation>
</message>
<message>
<location line="+131"/>
@@ -313,23 +325,23 @@ Will assume a single universal form.</source>
<message>
<location line="+1"/>
<source>Delete non-empty length variant?</source>
- <translation>Törölje az 0 hosszúságú változatok?</translation>
+ <translation>Biztosan törli ezt a hosszú változatot?</translation>
</message>
</context>
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+761"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+763"/>
<source>Dropped %n message(s) which had no ID.</source>
<translation>
- <numerusform>%n üzenez eldobva, melyek nem rendelkeztek azonosítóval.</numerusform>
+ <numerusform>%n azonosító nélküli üzenet eldobva.</numerusform>
</translation>
</message>
<message numerus="yes">
<location line="+4"/>
<source>Excess context/disambiguation dropped from %n message(s).</source>
<translation>
- <numerusform>Fölösleges szövegösszefüggés/egyértelműsítés törlése %n üzenetből.</numerusform>
+ <numerusform>A többlet kontextus/egyértelmüsítés eltávolítva %n üzenetből.</numerusform>
</translation>
</message>
<message numerus="yes">
@@ -337,7 +349,8 @@ Will assume a single universal form.</source>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation>
- <numerusform>%n fordítás legenerálása (%1 befejezett és %2 befejezetlen)</numerusform>
+ <numerusform> %n fordítás legenerálva (%1 végleges és %2 nem végleges)
+</numerusform>
</translation>
</message>
<message numerus="yes">
@@ -345,7 +358,8 @@ Will assume a single universal form.</source>
<source> Ignored %n untranslated source text(s)
</source>
<translation>
- <numerusform>%n lefordítatlan forrás szöveg mellőzése</numerusform>
+ <numerusform> %n lefordítatlan szöveg kihagyva
+</numerusform>
</translation>
</message>
</context>
@@ -354,32 +368,32 @@ Will assume a single universal form.</source>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>MainWindow</source>
- <translation>FőAblak</translation>
+ <translation>MainWindow</translation>
</message>
<message>
<location/>
<source>&amp;Phrases</source>
- <translation>&amp;Fázisok</translation>
+ <translation>&amp;Kifejezések</translation>
</message>
<message>
<location/>
<source>&amp;Close Phrase Book</source>
- <translation>&amp;Fázis könyvek bezárása</translation>
+ <translation>Kifejezéstár &amp;bezárása</translation>
</message>
<message>
<location/>
<source>&amp;Edit Phrase Book</source>
- <translation>Fázis könyvek &amp;szerkesztése</translation>
+ <translation>Kifejezéstár sz&amp;erkesztése</translation>
</message>
<message>
<location/>
<source>&amp;Print Phrase Book</source>
- <translation>&amp;Fázis könyvek nyomtatása</translation>
+ <translation>Kifejezéstár &amp;nyomtatása</translation>
</message>
<message>
<location/>
<source>V&amp;alidation</source>
- <translation>&amp;Érvényesítés</translation>
+ <translation>&amp;Ellenőrzés</translation>
</message>
<message>
<location/>
@@ -394,7 +408,7 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>&amp;Toolbars</source>
- <translation>&amp;Eszköztár</translation>
+ <translation>&amp;Eszköztárak</translation>
</message>
<message>
<location/>
@@ -404,7 +418,7 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>&amp;Translation</source>
- <translation>&amp;Fordítások</translation>
+ <translation>F&amp;ordítás</translation>
</message>
<message>
<location/>
@@ -413,23 +427,23 @@ Will assume a single universal form.</source>
</message>
<message>
<location/>
- <source>&amp;Edit</source>
- <translation>&amp;Szerkesztés</translation>
+ <source>Recently Opened &amp;Files</source>
+ <translation>Előzőleg megnyitott &amp;fájlok</translation>
</message>
<message>
<location/>
- <source>&amp;Open...</source>
- <translation>&amp;Megnyitás...</translation>
+ <source>&amp;Edit</source>
+ <translation>Sz&amp;erkesztés</translation>
</message>
<message>
<location/>
<source>Open a Qt translation source file (TS file) for editing</source>
- <translation>Egy Qt fordítási forrás fájl (TS fájl) megnyitása szerkesztésre</translation>
+ <translation>Qt fordytási forrás (TS fájl) megnyitása szerkesztésre</translation>
</message>
<message>
<location/>
<source>Ctrl+O</source>
- <translation>Ctrl+O</translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -439,170 +453,95 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Close this window and exit.</source>
- <translation>Ablak bezárása és kilépés.</translation>
+ <translation>Kilépés, és az ablak bezárása.</translation>
</message>
<message>
<location/>
<source>Ctrl+Q</source>
- <translation>Ctrl+Q</translation>
+ <translation></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+646"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+668"/>
<location line="+15"/>
<source>&amp;Save</source>
- <translation>&amp;Mentés</translation>
+ <translation>Menté&amp;s</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Save changes made to this Qt translation source file</source>
- <translation>Változtatások elmentése a Qt fordítási forrás fájlban</translation>
- </message>
- <message>
- <location/>
- <source>Move to the previous unfinished item.</source>
- <translation>Az előző befejezetlen elemre mozgatás.</translation>
- </message>
- <message>
- <location/>
- <source>Move to the next unfinished item.</source>
- <translation>A következő befejezetlen elemre mozgatás.</translation>
- </message>
- <message>
- <location/>
- <source>Move to the previous item.</source>
- <translation>Az előző elemre mozgatás.</translation>
- </message>
- <message>
- <location/>
- <source>Move to the next item.</source>
- <translation>A következő elemre mozgatás.</translation>
- </message>
- <message>
- <location/>
- <source>Mark this item as done and move to the next unfinished item.</source>
- <translation>Az elem készre jelölése és a következő befejezetlen elemre mozgás.</translation>
- </message>
- <message>
- <location/>
- <source>Copy from source text</source>
- <translation>Másolás forrás szövegből</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>Gyorsítások érvényesség ellenőrzésének kapcsolgatása, lásd vajon az et jelek száma megegyezik-e a a forrás és lefordított szövegben. Ha ez az ellenőrzés hibásan zárul le, a figyelmeztető ablakban egy üzenet tűnik fel.</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>A végződő írásjelek érvényesség ellenőrzésének kapcsolgatása. Ha ez az ellenőrzés nem sikerült, akkor egy üzenet bukkan fel a figyelmeztető ablakban.</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>Fázis ajánlások ellenőrzésének kapcsolgatása. Ha az ellenőrzés sikertelen, akkor egy üzenet bukkan fel a figyelmeztető ablakban.</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>A hely megjelelölők érvényesség ellenőrzésének kapcsolgatása, lásd vajon a(z) %1, %2.. következetesen vannak-e használva a forrás és lefordított szövegben. Ha az ellenőrzés sikertelen, egy üzenet bukkan fel a figyelmeztető ablakban.</translation>
+ <translation>A fordításon végzett változtatások elmentése</translation>
</message>
<message>
<location/>
<source>Open Read-O&amp;nly...</source>
- <translation>&amp;Csak olvasható megnyitása...</translation>
+ <translation>Megnyitás csak &amp;olvasásra...</translation>
</message>
<message>
<location/>
<source>&amp;Save All</source>
- <translation>Az összes &amp;mentése</translation>
+ <translation>Mind&amp;et menti</translation>
</message>
<message>
<location/>
<source>Ctrl+S</source>
- <translation>Ctrl+S</translation>
+ <translation></translation>
</message>
<message>
<location/>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="-14"/>
<location line="+11"/>
<source>Save &amp;As...</source>
- <translation>&amp;Másként mentés...</translation>
+ <translation>Mentés má&amp;sként...</translation>
</message>
<message>
<location/>
<source>Save As...</source>
- <translation>Másként mentés...</translation>
+ <translation>Mentés másként...</translation>
</message>
<message>
<location/>
<source>Save changes made to this Qt translation source file into a new file.</source>
- <translation>A változtatások egy új fájlba mentése, amik ebben a Qt fordítási forrás fájlban keletkeztek.</translation>
+ <translation>A fordításon végzett változtatások elmentése egy új fájlba.</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+4"/>
<source>&amp;Release</source>
- <translation>&amp;Kiadás</translation>
+ <translation>Kia&amp;dás</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 üzenez fájl létrehozása az aktuális üzenet fájlból, ami alkalmas a kiadásra.</translation>
- </message>
- <message>
- <location/>
- <source>&amp;Print...</source>
- <translation>&amp;Nyomtatás...</translation>
+ <translation>Az alkalmazások számára használható Qt üzenetfájl létrehozása a jelenlegi fájlból.</translation>
</message>
<message>
<location/>
<source>Ctrl+P</source>
- <translation>Ctrl+P</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>&amp;Undo</source>
- <translation>&amp;Visszacsinálás</translation>
- </message>
- <message>
- <location/>
- <source>Recently Opened &amp;Files</source>
- <translation>&amp;Utoljára megnyitott &amp;fájlok</translation>
- </message>
- <message>
- <location/>
- <source>Save</source>
- <translation>Mentés</translation>
- </message>
- <message>
- <location/>
- <source>Print a list of all the translation units in the current translation source file.</source>
- <translation>Az összes fordítási egység kinyomtatása az aktuális fordítási forrás fájlban.</translation>
- </message>
- <message>
- <location/>
- <source>Undo the last editing operation performed on the current translation.</source>
- <translation>Az utoljára szerkesztett művelet visszavonása az aktuális fordításon.</translation>
+ <translation>&amp;Visszavonás</translation>
</message>
<message>
<location/>
<source>Ctrl+Z</source>
- <translation>Ctrl+Z</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>&amp;Redo</source>
- <translation>&amp;Helyreállítás</translation>
+ <translation>Új&amp;ra</translation>
</message>
<message>
<location/>
<source>Redo an undone editing operation performed on the translation.</source>
- <translation>Szerkesztő művelet helyreállítása és visszavonása, ami az aktuális fordításon lett végrehajtva.</translation>
+ <translation>Egy visszavont szerkesztési művelet újra végrehajtása a fordításon.</translation>
</message>
<message>
<location/>
<source>Ctrl+Y</source>
- <translation>Ctrl+Y</translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -612,12 +551,12 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Copy the selected translation text to the clipboard and deletes it.</source>
- <translation>A kiválasztott fordítási szöveg vágólapra másolása és törlése.</translation>
+ <translation>A kijelölt szöveg vágólapra másolása és törlése.</translation>
</message>
<message>
<location/>
<source>Ctrl+X</source>
- <translation>Ctrl+X</translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -627,12 +566,12 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Copy the selected translation text to the clipboard.</source>
- <translation>A kiválaszott fordítási szöveg vágólapra másolása.</translation>
+ <translation>A kijelölt szöveg vágólapra másolása.</translation>
</message>
<message>
<location/>
<source>Ctrl+C</source>
- <translation>Ctrl+C</translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -642,42 +581,37 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Paste the clipboard text into the translation.</source>
- <translation>A vágólapon levő szöveg fordításba illesztése.</translation>
+ <translation>A vágólap tartalmának beillesztése a fordításba.</translation>
</message>
<message>
<location/>
<source>Ctrl+V</source>
- <translation>Ctrl+V</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Select &amp;All</source>
- <translation>Az &amp;összes kiválasztása</translation>
+ <translation>Ö&amp;sszes kijelölése</translation>
</message>
<message>
<location/>
<source>Select the whole translation text.</source>
- <translation>Az egész fordítási szöveg kiválasztása.</translation>
+ <translation>A fordítás teljes szövegét kijelöli.</translation>
</message>
<message>
<location/>
<source>Ctrl+A</source>
- <translation>Ctrl+A</translation>
- </message>
- <message>
- <location/>
- <source>&amp;Find...</source>
- <translation>&amp;Keresés...</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Search for some text in the translation source file.</source>
- <translation>Néhány szövegre keresés a fordítási forrás fájlban.</translation>
+ <translation>Szöveg keresése a fordítás alatt levő fájlban.</translation>
</message>
<message>
<location/>
<source>Ctrl+F</source>
- <translation>Ctrl+F</translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -687,182 +621,150 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Continue the search where it was left.</source>
- <translation>A keresés folytatása ott, ahol abba lett hagyva.</translation>
+ <translation>Az előző keresés folytatása.</translation>
</message>
<message>
<location/>
<source>F3</source>
- <translation>F3</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>&amp;Prev Unfinished</source>
- <translation>Az &amp;előző befejezetlen</translation>
- </message>
- <message>
- <location/>
- <source>Close</source>
- <translation>Bezárás</translation>
- </message>
- <message>
- <location/>
- <source>&amp;Close All</source>
- <translation>Az összes &amp;bezárása</translation>
- </message>
- <message>
- <location/>
- <source>Ctrl+W</source>
- <translation>Ctrl+W</translation>
+ <translation>&amp;Előző befejezetlen</translation>
</message>
<message>
<location/>
<source>Ctrl+K</source>
- <translation>Ctrl+K</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>&amp;Next Unfinished</source>
- <translation>&amp;Következő befejezetlen</translation>
+ <translation>Következő befejezetle&amp;n</translation>
</message>
<message>
<location/>
<source>P&amp;rev</source>
- <translation>&amp;Előző</translation>
+ <translation>E&amp;lőző</translation>
</message>
<message>
<location/>
<source>Ctrl+Shift+K</source>
- <translation>Ctrl+Shift+K</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Ne&amp;xt</source>
- <translation>&amp;Következő</translation>
+ <translation>Kö&amp;vetkező</translation>
</message>
<message>
<location/>
<source>&amp;Done and Next</source>
- <translation>&amp;Kész és Következő</translation>
+ <translation>Vé&amp;glegesítés és ugrás</translation>
</message>
<message>
<location/>
<source>Copies the source text into the translation field.</source>
- <translation>Forrás szövegek fordítási mezőbe másolása.</translation>
+ <translation>A forrás szöveg bemásolása a fordításba.</translation>
</message>
<message>
<location/>
<source>Ctrl+B</source>
- <translation>Ctrl+B</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>&amp;Accelerators</source>
- <translation>&amp;Gyorsítások</translation>
+ <translation>&amp;Gyorsbillentyűk</translation>
</message>
<message>
<location/>
<source>&amp;Ending Punctuation</source>
- <translation>&amp;Vég írásjelek</translation>
+ <translation>&amp;Záró írásjelek</translation>
</message>
<message>
<location/>
<source>&amp;Phrase matches</source>
- <translation>&amp;Fázis egyezés</translation>
+ <translation>&amp;Kifejezés egyezések</translation>
</message>
<message>
- <location/>
- <source>Place &amp;Marker Matches</source>
- <translation>Hely &amp;megjelölők egyezései</translation>
+ <source>Toggle checking that phrase suggestions are used.</source>
+ <translation type="obsolete">A kifejezéstár ajánlásainak használatának engedélyezése.</translation>
</message>
<message>
<location/>
- <source>&amp;New Phrase Book...</source>
- <translation>&amp;Új fázis könyv...</translation>
+ <source>Place &amp;Marker Matches</source>
+ <translation>&amp;Helyfoglalók egyezése</translation>
</message>
<message>
<location/>
<source>Create a new phrase book.</source>
- <translation>Egy új fázis könyv létrehozása.</translation>
+ <translation>Kifejezéstár létrehozása.</translation>
</message>
<message>
<location/>
<source>Ctrl+N</source>
- <translation>Ctrl+N</translation>
- </message>
- <message>
- <location/>
- <source>&amp;Open Phrase Book...</source>
- <translation>Fázis könyv &amp;megnyitása...</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Open a phrase book to assist translation.</source>
- <translation>Fáris könyv megnyitása a fordítás támogatásával.</translation>
+ <translation>Kifejezéstár megnyitása a fordításhoz.</translation>
</message>
<message>
<location/>
<source>Ctrl+H</source>
- <translation>Ctrl+H</translation>
- </message>
- <message>
- <location/>
- <source>&amp;Reset Sorting</source>
- <translation>&amp;Rendezés helyreállítása</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Sort the items back in the same order as in the message file.</source>
- <translation>Az elemek visszarendezése ugyanabba a sorrendben, ahogy az üzenet fájlban található.</translation>
+ <translation>Az üzenetfájlbeli sorrend visszaállítása.</translation>
</message>
<message>
<location/>
<source>&amp;Display guesses</source>
- <translation>Feltételezések &amp;kijelzése</translation>
+ <translation>&amp;Tippek megjelenítése</translation>
</message>
<message>
<location/>
<source>Set whether or not to display translation guesses.</source>
- <translation>Annak beállítása, hogy vajon kijelezze a fordítási feltételezéseket vagy sem.</translation>
+ <translation>Fordítási tippek megjelenítése vagy elrejtése.</translation>
</message>
<message>
<location/>
<source>&amp;Statistics</source>
- <translation>&amp;Statisztikák</translation>
- </message>
- <message>
- <location/>
- <source>Display translation statistics.</source>
- <translation>Fordítási statisztikák kijelzése.</translation>
+ <translation>&amp;Statisztika</translation>
</message>
<message>
<location/>
<source>&amp;Manual</source>
- <translation>&amp;Kézi</translation>
+ <translation>&amp;Kézikönyv</translation>
</message>
<message>
<location/>
<source>F1</source>
- <translation>F1</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>About Qt Linguist</source>
- <translation>Qt Linguist-ról</translation>
+ <translation>A Qt Linguist névjegye</translation>
</message>
<message>
<location/>
<source>About Qt</source>
- <translation>Qt-ról</translation>
+ <translation>A Qt névjegye</translation>
</message>
<message>
- <location/>
<source>Display information about the Qt toolkit by Trolltech.</source>
- <translation>Információ megjelenítése a Trolltech Qt eszközrendszeréről.</translation>
+ <translation type="obsolete">Információk a Trolltech Qt eszközkészletéről.</translation>
</message>
<message>
<location/>
<source>&amp;What&apos;s This?</source>
- <translation>&amp;Mi ez?</translation>
+ <translation>Mi e&amp;z?</translation>
</message>
<message>
<location/>
@@ -872,52 +774,44 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Enter What&apos;s This? mode.</source>
- <translation>Mi ez? beviteli mód.</translation>
+ <translation>Átlépés &quot;Mi ez?&quot; módba.</translation>
</message>
<message>
<location/>
<source>Shift+F1</source>
- <translation>Shift+F1</translation>
- </message>
- <message>
- <location/>
- <source>&amp;Search And Translate...</source>
- <translation>&amp;Keresés és fordítás...</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Replace the translation on all entries that matches the search source text.</source>
- <translation>A fordítások kicserélése az összes olyan helyen, ahol az megegyezik a keresett forrás szöveggel.</translation>
- </message>
- <message>
- <location/>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+21"/>
- <source>&amp;Batch Translation...</source>
- <translation>&amp;Köteg fordítás...</translation>
+ <translation>A fordítás cseréje minden olyan előfordulásnál, ahol a forrásszöveg illeszkedik a keresett szóra.</translation>
</message>
<message>
<location/>
<source>Batch translate all entries using the information in the phrase books.</source>
- <translation>Köteg fordítás mindenhol, ahol az információ a fázis könyvekben van haszálva.</translation>
+ <translation>Az összes bejegyzés automatikus fordítása a kifejezéstárak alapján.</translation>
</message>
<message>
<location/>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-34"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-13"/>
<location line="+10"/>
<source>Release As...</source>
- <translation>Kiadás, mint...</translation>
+ <translation>Kiadás másként...</translation>
+ </message>
+ <message>
+ <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 type="obsolete">Az alkalmazások számára használható Qt üzenetfájl létrehozása a jelenlegi fájlból. A fájlnév a jelenlegi ts fájl nevéből lesz megállapítva.</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2005"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2035"/>
<source></source>
<comment>This is the application&apos;s main window.</comment>
- <translatorcomment>Ez az alkalmazás fő ablaka.</translatorcomment>
<translation></translation>
</message>
<message>
- <location line="+188"/>
+ <location line="+190"/>
<source>Source text</source>
- <translation>Forrás szöveg</translation>
+ <translation>Forrás</translation>
</message>
<message>
<location line="+1"/>
@@ -929,7 +823,7 @@ Will assume a single universal form.</source>
<location line="-2"/>
<location line="+63"/>
<source>Context</source>
- <translation>Összefüggés</translation>
+ <translation>Környezet</translation>
</message>
<message>
<location line="-62"/>
@@ -939,22 +833,22 @@ Will assume a single universal form.</source>
<message>
<location line="+79"/>
<source>This panel lists the source contexts.</source>
- <translation>Ez a panel kilistázza a forrás összefüggéseket.</translation>
+ <translation>Ez a panel a környezeteket listázza.</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+13"/>
<source>Strings</source>
- <translation>Sztringek</translation>
+ <translation>Szövegek</translation>
</message>
<message>
- <location line="+39"/>
+ <location line="+37"/>
<source>Phrases and guesses</source>
- <translation>Kommunikációk és feltételezések</translation>
+ <translation>Kifejezések és tippek</translation>
</message>
<message>
<location line="+10"/>
<source>Sources and Forms</source>
- <translation>Források és formák</translation>
+ <translation>Források és űrlapok</translation>
</message>
<message>
<location line="+15"/>
@@ -965,10 +859,10 @@ Will assume a single universal form.</source>
<location line="+59"/>
<source> MOD </source>
<comment>status bar: file(s) modified</comment>
- <translation>MOD</translation>
+ <translation> MOD </translation>
</message>
<message>
- <location line="+130"/>
+ <location line="+139"/>
<source>Loading...</source>
<translation>Betöltés...</translation>
</message>
@@ -983,30 +877,30 @@ Will assume a single universal form.</source>
<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>A(z) &apos;%1&apos; fájl nem tartozik hozzá egyetlen aktuálisan megnyitott &apos;%2&apos; fájlhoz sem.
+ <translation>A(z) &apos;%1&apos; fájl nem kapcsolható a jelenleg megnyitott fájlokhoz (%2).
-Bezárja először a megnyitott fájl(oka)t?</translation>
+Bezárja a nyitott fájlokat?</translation>
</message>
<message>
<location line="+22"/>
<source>The file &apos;%1&apos; does not seem to be related to the file &apos;%2&apos; which is being loaded as well.
Skip loading the first named file?</source>
- <translation>A(z) &apos;%1&apos; fájl nem tartozik egyetlen &apos;%2&apos; fájlhoz sem, amelyik ugyanúgy be lett töltve.
+ <translation>A(z) &apos;%1&apos; fájl nem a &apos;%2&apos; fájlhoz tartozónak tűnik.
-Azt első megnevezett fájl betöltésének kihagyása?</translation>
+Kihagyja ennek a fájlnak a betöltését?</translation>
</message>
<message numerus="yes">
<location line="+61"/>
<source>%n translation unit(s) loaded.</source>
<translation>
- <numerusform>%n fordítási egység betöltése.</numerusform>
+ <numerusform>%n fordítási egység betöltve.</numerusform>
</translation>
</message>
<message>
- <location line="+93"/>
+ <location line="+94"/>
<source>Related files (%1);;</source>
- <translation>Hozzákapcsolodó fájlok (%1);;</translation>
+ <translation>Hozzátartozó fájlok (%1);;</translation>
</message>
<message>
<location line="+4"/>
@@ -1017,27 +911,27 @@ Azt első megnevezett fájl betöltésének kihagyása?</translation>
<location line="+10"/>
<location line="+31"/>
<source>File saved.</source>
- <translation>Fájl elmentve.</translation>
+ <translation>A fájl elmentve.</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+15"/>
- <location line="+1165"/>
+ <location line="+1187"/>
<source>Release</source>
<translation>Kiadás</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1164"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1186"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
- <translation>Qt üzenet fájlok a kiadott alkalmazásra (*.qm)
-Az összes fájl(*)</translation>
+ <translation>Qt üzenetfájlok a kiadott alkalmazásokhoz (*.qm)
+Minden fájl (*)</translation>
</message>
<message>
<location line="+3"/>
<location line="+12"/>
<source>File created.</source>
- <translation>Fál létrehozva.</translation>
+ <translation>A fájl létrehozva.</translation>
</message>
<message>
<location line="+34"/>
@@ -1048,34 +942,34 @@ Az összes fájl(*)</translation>
<message>
<location line="-347"/>
<source>Context: %1</source>
- <translation>Összefüggés: %1</translation>
+ <translation>Környezet: %1</translation>
</message>
<message>
<location line="+32"/>
<source>finished</source>
- <translation>Befejezve</translation>
+ <translation>végleges</translation>
</message>
<message>
<location line="+3"/>
<source>unresolved</source>
- <translation>Nincs megoldva</translation>
+ <translation>hibás</translation>
</message>
<message>
<location line="+3"/>
<source>obsolete</source>
- <translation>Elavulás</translation>
+ <translation>elavult</translation>
</message>
<message>
<location line="+15"/>
<location line="+307"/>
<source>Printing... (page %1)</source>
- <translation>Nyomtatás... (%1 lap)</translation>
+ <translation>Nyomtatás... (oldal %1)</translation>
</message>
<message>
<location line="-300"/>
<location line="+307"/>
<source>Printing completed</source>
- <translation>Nyomtatás teljesítve</translation>
+ <translation>Nyomtatás befejezve</translation>
</message>
<message>
<location line="-305"/>
@@ -1086,7 +980,7 @@ Az összes fájl(*)</translation>
<message>
<location line="-232"/>
<source>Search wrapped.</source>
- <translation>Keresés elrejtése.</translation>
+ <translation>A keresés befejeződött.</translation>
</message>
<message>
<location line="+17"/>
@@ -1094,7 +988,7 @@ Az összes fájl(*)</translation>
<location line="+34"/>
<location line="+24"/>
<location line="+22"/>
- <location line="+516"/>
+ <location line="+538"/>
<location line="+1"/>
<location line="+274"/>
<location line="+40"/>
@@ -1103,67 +997,67 @@ Az összes fájl(*)</translation>
<translation>Qt Linguist</translation>
</message>
<message>
- <location line="-1198"/>
+ <location line="-1220"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
- <translation>A(z) &apos;%1&apos; sztring nem található.</translation>
+ <translation>A szöveg nem található: &apos;%1&apos;.</translation>
</message>
<message>
<location line="-82"/>
<source>Search And Translate in &apos;%1&apos; - Qt Linguist</source>
- <translation>Keresés és fordítás a(z) &apos;%1&apos;-ben - Qt Linguist</translation>
+ <translation>Keresés és fordítás itt: &apos;%1&apos; - Qt Linguist</translation>
</message>
<message>
<location line="+34"/>
<location line="+23"/>
<location line="+24"/>
<source>Translate - Qt Linguist</source>
- <translation>Qt Linguist fordítása</translation>
+ <translation>Fordítás - Qt Linguist</translation>
</message>
<message numerus="yes">
<location line="-46"/>
<source>Translated %n entry(s)</source>
<translation>
- <numerusform>%n bevitel lefordítva</numerusform>
+ <numerusform>%n bejegyzés lefordítva</numerusform>
</translation>
</message>
<message>
<location line="+23"/>
<source>No more occurrences of &apos;%1&apos;. Start over?</source>
- <translation>Nem található &apos;%1&apos; több előfordulása. Előlről kezdi?</translation>
+ <translation>Nincs több találat erre: &apos;%1&apos;. Kezdjük elölről?</translation>
</message>
<message>
<location line="+30"/>
<source>Create New Phrase Book</source>
- <translation>Új kommunikációs könyv létrehozása</translation>
+ <translation>Kifejezéstár létrehozása</translation>
</message>
<message>
<location line="+1"/>
<source>Qt phrase books (*.qph)
All files (*)</source>
- <translation>Qt kommunikációs könyv (*.qph)
-Az összes fájl (*)</translation>
+ <translation>Qt kifejezéstárak (*.qph)
+Minden fájl (*)</translation>
</message>
<message>
<location line="+11"/>
<source>Phrase book created.</source>
- <translation>Kommunikációs könyv létrehozva.</translation>
+ <translation>A kifejezéstár létrehozva.</translation>
</message>
<message>
<location line="+17"/>
<source>Open Phrase Book</source>
- <translation>Kommunikációs könyv megnyitása</translation>
+ <translation>Kifejezéstár megnyitása</translation>
</message>
<message>
<location line="+1"/>
<source>Qt phrase books (*.qph);;All files (*)</source>
- <translation>Qt kommunikációs könyvek (*.qpm);;Az összes fájl (*)</translation>
+ <translation>Qt kifejezéstárak (*.qph);;Minden fájl (*)</translation>
</message>
<message numerus="yes">
<location line="+7"/>
<source>%n phrase(s) loaded.</source>
<translation>
- <numerusform>%n kommunikáció betöltése.</numerusform>
+ <numerusform>%n kifejezés betöltve.</numerusform>
</translation>
</message>
<message>
@@ -1171,47 +1065,56 @@ Az összes fájl (*)</translation>
<location line="+3"/>
<location line="+7"/>
<source>Add to phrase book</source>
- <translation>Kommunikációs könyv hozzáadása</translation>
+ <translation>Hozzáadás a kifejezéstárhoz</translation>
</message>
<message>
<location line="-9"/>
<source>No appropriate phrasebook found.</source>
- <translation>Nem található megfelelő kommunikációs könyv.</translation>
+ <translation>Nincs megfelelő kifejezéstár.</translation>
</message>
<message>
<location line="+3"/>
<source>Adding entry to phrasebook %1</source>
- <translation>Új elem hozzáadása a(z) %1 fázis fáziskönyvhöz</translation>
+ <translation>Hozzáadás ehhez kifejezéstárhoz: &apos;%1&apos;</translation>
</message>
<message>
<location line="+7"/>
<source>Select phrase book to add to</source>
- <translation>Kommunikációs könyv kiválasztása hozzáadásra</translation>
+ <translation>Válassza ki a bővítendő kifejezéstárat</translation>
</message>
<message>
<location line="+29"/>
<source>Unable to launch Qt Assistant (%1)</source>
- <translation>Nem lehet elindítani a Qt Assistant (%1)</translation>
+ <translation>A Qt Asszisztens elindítása sikertelen (%1)</translation>
</message>
<message>
<location line="+17"/>
<source>Version %1</source>
- <translation>%1 Verzió</translation>
+ <translation>Verzió %1</translation>
</message>
<message>
<location line="+3"/>
<source>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist is a tool for adding translations to Qt applications.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</source>
- <translation>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist egy olyan eszköz, amelyekkel fordítások adhat hozzá a Qt alkalmazásokhoz.&lt;/p&gt;&lt;p&gt;Szerzői jog(C) 2010 Nokia Vállalat és/vagy leányvállalatai.</translation>
+ <translation>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;A Qt Linguist a Qt alkalmazások fordítását segítő eszköz.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</translation>
+ </message>
+ <message>
+ <source>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist is a tool for adding translations to Qt applications.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</source>
+ <translatorcomment>&lt;/p&gt;</translatorcomment>
+ <translation type="obsolete">&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;A Qt Linguist a Qt alkalmazások fordítását segítő eszköz.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation és leányvállalata(i).</translation>
+ </message>
+ <message>
+ <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="obsolete">&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;A Qt Linguist a Qt alkalmazások fordítását segítő eszköz.&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2000-2007 Trolltech ASA. Minden jog fenntartva.&lt;/p&gt;&lt;p&gt;Ez a program abban a reményben került közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az ELADHATÓSÁGRA vagy VALAMELY CÉLRA VALÓ ALKALMAZHATÓSÁGRA való származtatott garanciát is beleértve.&lt;/p&gt;</translation>
</message>
<message>
<location line="+38"/>
<source>Do you want to save the modified files?</source>
- <translation>El szeretné menteni a módosított fájlokat?</translation>
+ <translation>Menti a módosított fájlokat?</translation>
</message>
<message>
<location line="+22"/>
<source>Do you want to save &apos;%1&apos;?</source>
- <translation>El szeretné menteni a(z) %1-t ?</translation>
+ <translation>Menti ezt a fájlt &apos;%1&apos;?</translation>
</message>
<message>
<location line="+43"/>
@@ -1227,10 +1130,10 @@ Az összes fájl (*)</translation>
<location line="+267"/>
<location line="+12"/>
<source>No untranslated translation units left.</source>
- <translation>Nem maradtak lefordítatlan fordítások.</translation>
+ <translation>Nincs több lefordítandó kifejezés.</translation>
</message>
<message>
- <location line="+176"/>
+ <location line="+198"/>
<source>&amp;Window</source>
<translation>&amp;Ablak</translation>
</message>
@@ -1242,27 +1145,27 @@ Az összes fájl (*)</translation>
<message>
<location line="+1"/>
<source>Ctrl+M</source>
- <translation>Ctrl+M</translation>
+ <translation></translation>
</message>
<message>
<location line="+12"/>
<source>Display the manual for %1.</source>
- <translation>A manuál megjelenítése %1-re vonatkozóan.</translation>
+ <translation>%1 kézikönyvének megtekintése.</translation>
</message>
<message>
<location line="+1"/>
<source>Display information about %1.</source>
- <translation>Információ megjelenítése a(z) %1-ről.</translation>
+ <translation>Információk megjelenítése erről: %1.</translation>
</message>
<message>
<location line="+70"/>
<source>&amp;Save &apos;%1&apos;</source>
- <translation>&apos;%1&apos; &amp;mentése</translation>
+ <translation>&apos;%1&apos; menté&amp;se</translation>
</message>
<message>
<location line="+1"/>
<source>Save &apos;%1&apos; &amp;As...</source>
- <translation>&apos;%1&apos; &amp;másként mentése...</translation>
+ <translation>&apos;%1&apos; mentése máské&amp;nt...</translation>
</message>
<message>
<location line="+1"/>
@@ -1272,12 +1175,12 @@ Az összes fájl (*)</translation>
<message>
<location line="+1"/>
<source>Release &apos;%1&apos; As...</source>
- <translation>&apos;%1&apos; másként kiadása...</translation>
+ <translation>&apos;%1&apos; kiadása mint...</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Close &apos;%1&apos;</source>
- <translation>&apos;%1&apos; &amp;bezárása</translation>
+ <translation>&apos;%1&apos; be&amp;zárása</translation>
</message>
<message>
<location line="+6"/>
@@ -1288,33 +1191,33 @@ Az összes fájl (*)</translation>
<message>
<location line="-10"/>
<source>Save All</source>
- <translation>Az összes mentése</translation>
+ <translation>Mindet menti</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1"/>
<source>&amp;Release All</source>
- <translation>Az összes &amp;kiadása</translation>
+ <translation>Összes k&amp;iadása</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1"/>
<source>Close All</source>
- <translation>Az összes bezárása</translation>
+ <translation>Mindet bezár</translation>
</message>
<message>
<location line="+23"/>
<source>Translation File &amp;Settings for &apos;%1&apos;...</source>
- <translation>Fordítási fájlok &amp;beállítása erre &apos;%1&apos;...</translation>
+ <translation>Fordításfájl beállítá&amp;sok ehhez: &apos;%1&apos;...</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Batch Translation of &apos;%1&apos;...</source>
- <translation>A(z) &apos;%1&apos; &amp;köteg fordítása...</translation>
+ <translation>&apos;%1&apos; köte&amp;gelt fordítása...</translation>
</message>
<message>
<location line="+1"/>
<source>Search And &amp;Translate in &apos;%1&apos;...</source>
- <translation>Keresés és &amp;fordítás &apos;%1&apos;-ben...</translation>
+ <translation>Keresés és fordí&amp;tás itt: &apos;%1&apos;...</translation>
</message>
<message>
<location line="+4"/>
@@ -1343,7 +1246,7 @@ Az összes fájl (*)</translation>
<location/>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+6"/>
<source>Validation</source>
- <translation>Érvényesítés</translation>
+ <translation>Ellenőrzés</translation>
</message>
<message>
<location/>
@@ -1354,151 +1257,313 @@ Az összes fájl (*)</translation>
<message>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+84"/>
<source>Cannot read from phrase book &apos;%1&apos;.</source>
- <translation>Nem lehet a(z) &apos;%1&apos; kommunikációs könyvből olvasni.</translation>
+ <translation>Nem lehet a(z) &apos;%1&apos; kifejezéstárból olvasni.</translation>
</message>
<message>
<location line="+15"/>
<source>Close this phrase book.</source>
- <translation>A kommunikációs könyv bezárása.</translation>
+ <translation>Kifejezéstár bezárása.</translation>
</message>
<message>
<location line="+4"/>
<source>Enables you to add, modify, or delete entries in this phrase book.</source>
- <translation>Hozzáadás, módosítás, vagy törlés engedélyezése ebben a kommunikációs könyvben.</translation>
+ <translation>Lehetővé teszi a bejegyzések szerkesztését a kifejezéskönyvben.</translation>
</message>
<message>
<location line="+5"/>
<source>Print the entries in this phrase book.</source>
- <translation>Az összes bevitel kinyomtatása ebben a társalgási szótárban.</translation>
+ <translation>A kifejezéskönyv tartalmának nyomtatása.</translation>
</message>
<message>
<location line="+16"/>
<source>Cannot create phrase book &apos;%1&apos;.</source>
- <translation>Nem lehet a &apos;%1&apos; társalgási szótárat létrehozni.</translation>
+ <translation>A(z) &apos;%1&apos; kifejezéstár létrehozása sikertelen.</translation>
</message>
<message>
<location line="+10"/>
<source>Do you want to save phrase book &apos;%1&apos;?</source>
- <translation>El szeretné menteni a &apos;%1&apos; társalgási szótárat?</translation>
+ <translation>Biztosan menti a(z) &apos;%1&apos; kifejezéskönyvet?</translation>
</message>
<message>
- <location line="+323"/>
+ <location line="+349"/>
<source>All</source>
- <translation>Mind</translation>
+ <translation>Minden</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Open/Refresh Form &amp;Preview</source>
- <translation>Forma megnyitása/felfrissítése &amp;nézet</translation>
+ <translation>Form &amp;előnézet megnyitása/frissítése</translation>
</message>
<message>
<location/>
<source>Form Preview Tool</source>
- <translation>Forma előnézeti eszköz</translation>
+ <translation>Form előnézeti eszköz</translation>
</message>
<message>
<location/>
<source>F5</source>
- <translation>F5</translation>
+ <translation></translation>
</message>
<message>
<location/>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-536"/>
+ <source>&amp;Open...</source>
+ <translation>Meg&amp;nyitás...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Save</source>
+ <translation>Mentés</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Print...</source>
+ <translation>&amp;Nyomtatás...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print a list of all the translation units in the current translation source file.</source>
+ <translation>A fordítási egységeket listázza a jelenlegi fordításfájlban.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Undo the last editing operation performed on the current translation.</source>
+ <translation>A legutolsó szerkesztő művelet visszavonása a fordításon.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Find...</source>
+ <translation>K&amp;eresés...</translation>
+ </message>
+ <message>
+ <source>Previous unfinished item.</source>
+ <translation type="obsolete">Előző lefordítatlan bejegyzés.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the previous unfinished item.</source>
+ <translation>Ugrás a előző lefordítatlan bejegyzésre.</translation>
+ </message>
+ <message>
+ <source>Next unfinished item.</source>
+ <translation type="obsolete">Következő lefordítatlan bejegyzés.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the next unfinished item.</source>
+ <translation>Ugrás a következő lefordítatlan bejegyzésre.</translation>
+ </message>
+ <message>
+ <source>Move to previous item.</source>
+ <translation type="obsolete">Ugrás az előző bejegyzésre.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the previous item.</source>
+ <translation>Ugrás az előző bejegyzésre.</translation>
+ </message>
+ <message>
+ <source>Next item.</source>
+ <translation type="obsolete">Következő bejegyzés.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the next item.</source>
+ <translation>Ugrás a következő bejegyzésre.</translation>
+ </message>
+ <message>
+ <source>Mark item as done and move to the next unfinished item.</source>
+ <translation type="obsolete">Az aktuális bejegyzés késznek jelölése és ugrás a következő lefordítatlanra.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Mark this item as done and move to the next unfinished item.</source>
+ <translation>Ezt a bejegyzést késznek jelöli és a következő lefordítatlanra ugrik.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copy from source text</source>
+ <translation>Forrásszöveg másolása</translation>
+ </message>
+ <message>
+ <source>Toggle the validity check of accelerators.</source>
+ <translation type="obsolete">A gyorsbillentyűk meglétének ellenőrzése.</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>A gyorsbillentyűk meglétének ellenőrzése, vagyis hogy a forrás és célszövegben található &amp;&amp; jelek száma megegyezik-e. Ha nem, akkor a figyelmeztetések közt jelezve lesz.</translation>
+ </message>
+ <message>
+ <source>Toggle the validity check of ending punctuation.</source>
+ <translation type="obsolete">A mondatvégi írásjelek ellenőrzése.</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>A mondatvégi írásjelek ellenőrzése. Ha nem, akkor a figyelmeztetések közt jelezve lesz.</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>Az ajánlásokhoz való igazodás ellenőrzése. Ha van ajánlás, mégsincs felhasználva a fordításban, akkor a figyelmeztetések közt jelezve lesz.</translation>
+ </message>
+ <message>
+ <source>Toggle the validity check of place markers.</source>
+ <translation type="obsolete">A helyfoglalók ellenőrzése.</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>A helyfoglalók ellenőrzése, vagyis a %1, %2, ... helyfoglalók konzisztensen vannak-e használva a fordításban. Ha nem, akkor a figyelmeztetések közt jelezve lesz.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;New Phrase Book...</source>
+ <translation>Ú&amp;j kifejezéstár...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Open Phrase Book...</source>
+ <translation>Kifejezéstár meg&amp;nyitása...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Reset Sorting</source>
+ <translation>Rendezés &amp;visszaállítása</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Display translation statistics.</source>
+ <translation>Fordítási statisztikák megjelenítése.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Search And Translate...</source>
+ <translation>Keresés és &amp;fordítás...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Close</source>
+ <translation>Bezárás</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Close All</source>
+ <translation>Mind&amp;et bezár</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+W</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-561"/>
+ <source>&amp;Batch Translation...</source>
+ <translation>&amp;Kötegelt fordítás...</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1"/>
<source>Translation File &amp;Settings...</source>
- <translation>Fordítási fájl &amp;beállítások...</translation>
+ <translation>Fordítási fájl beállítá&amp;sai...</translation>
</message>
<message>
<location/>
<source>&amp;Add to Phrase Book</source>
- <translation>Társalgási szótárhoz &amp;hozzáadás</translation>
+ <translation>Hozzá&amp;adás a kifejezéstárhoz</translation>
</message>
<message>
<location/>
<source>Ctrl+T</source>
- <translation>Ctrl+T</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Ctrl+J</source>
- <translation>Ctrl+J</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Ctrl+Shift+J</source>
- <translation>Ctrl+Shift+J</translation>
+ <translation></translation>
</message>
<message>
<location/>
<source>Previous unfinished item</source>
- <translation>Előző befejezetlen elem</translation>
+ <translation>Előző lefordítatlan bejegyzés</translation>
</message>
<message>
<location/>
<source>Next unfinished item</source>
- <translation>Következő befejezetlen elem</translation>
+ <translation>Következő lefordítatlan bejegyzés</translation>
</message>
<message>
<location/>
<source>Move to previous item</source>
- <translation>Az előző befejezetlen elemre mozgás</translation>
+ <translation>Ugrás az előző bejegyzésre</translation>
</message>
<message>
<location/>
<source>Next item</source>
- <translation>Következő elem</translation>
+ <translation>Következő bejegyzés</translation>
</message>
<message>
<location/>
<source>Mark item as done and move to the next unfinished item</source>
- <translation>Az elem készként jelölése és a következő befejezetlen elemre mozgatás</translation>
+ <translation>Az aktuális bejegyzés késznek jelölése és ugrás a következő lefordítatlanra</translation>
</message>
<message>
<location/>
<source>Copies the source text into the translation field</source>
- <translation>A forrás szöveg fordítási szövegbe másolása</translation>
+ <translation>A forrás szöveg bemásolása a fordításba</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of accelerators</source>
- <translation>Gyorsítások érvényesség ellenőrzésének kapcsolgatása</translation>
+ <translation>A gyorsbillentyűk meglétének ellenőrzése</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of ending punctuation</source>
- <translation>Vég írásjelek érvényesség ellenőrzésének kapcsolgatása</translation>
+ <translation>A mondatvégi írásjelek ellenőrzése</translation>
</message>
<message>
<location/>
<source>Toggle checking that phrase suggestions are used</source>
- <translation>A használt társalgási ajánlások ellenőrzésének kapcsolgatása</translation>
+ <translation>A kifejezéstár ajánlásainak használatának engedélyezése</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of place markers</source>
- <translation>Hely megjelölők érvényesség vizsgálatának kapcsolgatása</translation>
+ <translation>A helyfoglalók ellenőrzése</translation>
</message>
<message>
<location/>
<source>Create a Qt message file suitable for released applications from the current message file. The filename will automatically be determined from the name of the TS file.</source>
- <translation>Egy Qt üzenet fájl létrehozása az aktuális üzenet fájlból, amely megfelelő az alkalmazás kiadásaira. A fájlnév TS fájl nevéből lesz automatikusan meghatározva.</translation>
+ <translation>Az alkalmazások számára használható Qt üzenetfájl létrehozása a jelenlegi fájlból. A fájlnév a jelenlegi ts fájl nevéből lesz megállapítva.</translation>
</message>
<message>
<location/>
<source>Length Variants</source>
- <translation>Hossz változatok</translation>
+ <translation>Hosszú változat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Display information about the Qt toolkit by Nokia.</source>
+ <translation>Információk a Nokia Qt eszközkészletéről.</translation>
</message>
</context>
<context>
<name>MessageEditor</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <location filename="../../../../../home/hron/Projects/localize/qt-l10n-hu/tools/linguist/linguist/messageeditor.cpp" line="+42"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
- <translatorcomment>Ez a fő ablak jobb panelja.</translatorcomment>
<translation></translation>
</message>
<message>
- <location line="+30"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>Russian</source>
<translation>Orosz</translation>
</message>
@@ -1528,14 +1593,14 @@ Az összes fájl (*)</translation>
<translation>Kínai</translation>
</message>
<message>
- <location line="+53"/>
+ <location line="+47"/>
<source>This whole panel allows you to view and edit the translation of some source text.</source>
- <translation>Ez az egész pabel engedélyezi néhány forrás szöveg fordításának megtekintését és szerkesztését.</translation>
+ <translation>Ezen a panelen tekinthetőek meg és szerkeszthetők a fordítások.</translation>
</message>
<message>
- <location line="+18"/>
+ <location line="+10"/>
<source>Source text</source>
- <translation>Forrás szöveg</translation>
+ <translation>Forrásszöveg</translation>
</message>
<message>
<location line="+2"/>
@@ -1545,12 +1610,12 @@ Az összes fájl (*)</translation>
<message>
<location line="+4"/>
<source>Source text (Plural)</source>
- <translation>Forrás szöveg (Többesszám)</translation>
+ <translation>Forrásszöveg (többes szám)</translation>
</message>
<message>
<location line="+2"/>
<source>This area shows the plural form of the source text.</source>
- <translation>Ez a terület mutatja a forrás szöveg többesszámú formáját.</translation>
+ <translation>Ez a terület mutatja a forrás szöveg többesszámát.</translation>
</message>
<message>
<location line="+4"/>
@@ -1560,22 +1625,22 @@ Az összes fájl (*)</translation>
<message>
<location line="+3"/>
<source>This area shows a comment that may guide you, and the context in which the text occurs.</source>
- <translation>Ez a terület mutatja a megjegyzéseket, ami segítheti Önt, és az összefüggéseket, hogy melyik szövegben fordul elő.</translation>
+ <translation>Ez a rész mutatja meg a fejlesztő segítő megjegyzéseit, és a szövegkörnyezet részleteit.</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>Itt hozzáadhatja a saját megjegyzését saját használatra. Nincsen hatásuk a lefordított alkalmazásokon.</translation>
+ <translation>Ide lehet beírni a fordításhoz tartozó megjegyzéseket. Ez nincs hatással a lefordított alkalmazásokra.</translation>
</message>
<message>
- <location line="+232"/>
+ <location line="+234"/>
<source>%1 translation (%2)</source>
<translation>%1 fordítás (%2)</translation>
</message>
<message>
<location line="+9"/>
<source>This is where you can enter or modify the translation of the above source text.</source>
- <translation>Ez az a hely, ahol beviheti és módosíthatja a fentebb található forrás szöveg fordítását.</translation>
+ <translation>Itt írható be, vagy módosítható a forrás szöveg fordítása.</translation>
</message>
<message>
<location line="+5"/>
@@ -1585,62 +1650,54 @@ Az összes fájl (*)</translation>
<message>
<location line="+1"/>
<source>%1 translator comments</source>
- <translation>%1 fordító megjegyzések</translation>
+ <translation>%1 fordítói megjegyzés</translation>
</message>
<message>
<location line="+157"/>
<source>&apos;%1&apos;
Line: %2</source>
- <translation>&apos;%1&apos;
+ <translation>&apos;%1&apos;
Sor: %2</translation>
</message>
</context>
<context>
<name>MessageModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+839"/>
<source>Completion status for %1</source>
- <translation>%1 elkészítési státusza</translation>
+ <translation>Készültségi állapot %1 nyelvhez</translation>
</message>
<message>
<location line="+15"/>
<source>&lt;file header&gt;</source>
- <translation>&lt;file header&gt;</translation>
+ <translation>&lt;fájl fejléc&gt;</translation>
</message>
<message>
<location line="+2"/>
<source>&lt;context comment&gt;</source>
- <translation>&lt;context comment&gt;</translation>
+ <translation>&lt;környezet megjegyzés&gt;</translation>
</message>
<message>
<location line="+71"/>
<source>&lt;unnamed context&gt;</source>
- <translation>&lt;unnamed context&gt;</translation>
+ <translation>&lt;névtelen környezet&gt;</translation>
</message>
</context>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-614"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-600"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
- <translatorcomment>Ez a fő ablak jobb panelja.</translatorcomment>
<translation></translation>
</message>
</context>
<context>
<name>PhraseBookBox</name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+12"/>
- <source></source>
- <comment>Go to Phrase &gt; Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment>
- <translatorcomment>Társalgás -&gt; Társalgási szótár szerkesztése... A felbukkanó ablak egy TársalgásiSzótárDoboz.</translatorcomment>
- <translation></translation>
- </message>
- <message>
- <location line="+54"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+66"/>
<source>(New Entry)</source>
- <translation>(Új bevitel)</translation>
+ <translation>(Új bejegyzés)</translation>
</message>
<message>
<location line="+3"/>
@@ -1655,17 +1712,12 @@ Sor: %2</translation>
<message>
<location line="+1"/>
<source>Cannot save phrase book &apos;%1&apos;.</source>
- <translation>Nem lehet elmenteni a(z) &apos;%1&apos; társalgási szótárat.</translation>
+ <translation>Nem lehet ezt a kifejezéstárat elmenteni: &apos;%1&apos;.</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/phrasebookbox.ui"/>
<source>Edit Phrase Book</source>
- <translation>Társalgási szótár szerkesztése</translation>
- </message>
- <message>
- <location/>
- <source>This window allows you to add, modify, or delete entries in a phrase book.</source>
- <translation>Ez az ablak engedélyezi új bevitelek hozzáadását, módosítását, vagy törlését egy társalgási szótárban.</translation>
+ <translation>Kifejezéstár szerkesztése</translation>
</message>
<message>
<location/>
@@ -1675,22 +1727,22 @@ Sor: %2</translation>
<message>
<location/>
<source>This is the phrase in the target language corresponding to the source phrase.</source>
- <translation>Ez a forrás társalgás megfelelője a cél nyelvben.</translation>
+ <translation>A forrás nyelvi kifejezés célnyelvi megfelelője.</translation>
</message>
<message>
<location/>
<source>S&amp;ource phrase:</source>
- <translation>&amp;Forrás társalgás:</translation>
+ <translation>F&amp;orrás kifejezés:</translation>
</message>
<message>
<location/>
<source>This is a definition for the source phrase.</source>
- <translation>Ez egy forrás fordítás definíció.</translation>
+ <translation>Ez a forráskifejezés meghatározása.</translation>
</message>
<message>
<location/>
<source>This is the phrase in the source language.</source>
- <translation>Ez egy társalgás a forrás nyelvben.</translation>
+ <translation>Ez a forrás nyelvi kifejezés.</translation>
</message>
<message>
<location/>
@@ -1700,22 +1752,37 @@ Sor: %2</translation>
<message>
<location/>
<source>Click here to add the phrase to the phrase book.</source>
- <translation>Kattintson ide a társalgás hozzáadásához a társalgási könyvben.</translation>
+ <translation>Kattintson ide a kifejezés kifejezéstárba vételéhez.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Save</source>
+ <translation>Menté&amp;s</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to save the changes made.</source>
+ <translation>Kattintson ide a változások mentéséhez.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>This window allows you to add, modify, or delete entries in a phrase book.</source>
+ <translation>Ebben az ablakban nyílik lehetőség a kifejezéstár bővítésére, szűkítésére és módosítására.</translation>
</message>
<message>
<location/>
<source>&amp;New Entry</source>
- <translation>&amp;Új bevitel</translation>
+ <translation>Ú&amp;j bejegyzés</translation>
</message>
<message>
<location/>
<source>Click here to remove the entry from the phrase book.</source>
- <translation>Kattintson ide a bevitel társalgási könyvből való eltávolításához.</translation>
+ <translation>Kattintson ide a kifejezés törléséhez a kifejezéstárból.</translation>
</message>
<message>
<location/>
<source>&amp;Remove Entry</source>
- <translation>Bevitel &amp;eltávolítása</translation>
+ <translation>Bejegyzés tö&amp;rlése</translation>
</message>
<message>
<location/>
@@ -1724,13 +1791,8 @@ Sor: %2</translation>
</message>
<message>
<location/>
- <source>Click here to save the changes made.</source>
- <translation>Kattintson ide a változtatások elmentéséhez.</translation>
- </message>
- <message>
- <location/>
- <source>&amp;Save</source>
- <translation>&amp;Mentés</translation>
+ <source>Close</source>
+ <translation>Bezárás</translation>
</message>
<message>
<location/>
@@ -1738,9 +1800,10 @@ Sor: %2</translation>
<translation>Kattintson ide az ablak bezárásához.</translation>
</message>
<message>
- <location/>
- <source>Close</source>
- <translation>Bezárás</translation>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-146"/>
+ <source></source>
+ <comment>Go to Phrase &gt; Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment>
+ <translation></translation>
</message>
</context>
<context>
@@ -1748,7 +1811,7 @@ Sor: %2</translation>
<message>
<location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/>
<source>Source phrase</source>
- <translation>Forrás társalgás</translation>
+ <translation>Forrás kifejezés</translation>
</message>
<message>
<location line="+2"/>
@@ -1776,12 +1839,12 @@ Sor: %2</translation>
<message>
<location line="+113"/>
<source>Guess (%1)</source>
- <translation>Feltételezés (%1)</translation>
+ <translation>Tipp (%1)</translation>
</message>
<message>
<location line="+2"/>
<source>Guess</source>
- <translation>Feltételezés</translation>
+ <translation>Tipp</translation>
</message>
</context>
<context>
@@ -1789,20 +1852,21 @@ Sor: %2</translation>
<message>
<location filename="../tools/linguist/shared/qm.cpp" line="+12"/>
<source>Compiled Qt translations</source>
+ <translatorcomment>Released files (*.qm)</translatorcomment>
<translation>Lefordított Qt fordítások</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1280"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1302"/>
<source>Translation files (%1);;</source>
<translation>Fordítási fájlok (%1);;</translation>
</message>
<message>
<location line="+5"/>
<source>All files (*)</source>
- <translation>Fájlok hozzáadása ( *)</translation>
+ <translation>Minden fájl (*)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1127"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1134"/>
<location line="+27"/>
<location line="+67"/>
<location line="+39"/>
@@ -1813,34 +1877,59 @@ Sor: %2</translation>
<translation>Qt Linguist</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+658"/>
+ <source>C++ source files</source>
+ <translation type="obsolete">C++ forrásfájlok</translation>
+ </message>
+ <message>
+ <source>Java source files</source>
+ <translation type="obsolete">Java forrásfájlok</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/shared/po.cpp" line="+817"/>
<source>GNU Gettext localization files</source>
<translation>GNU Gettext lokalizációs fájlok</translation>
</message>
<message>
+ <location line="+7"/>
+ <source>GNU Gettext localization template files</source>
+ <translation>GNU Gettext lokalizációs sablonfájlok</translation>
+ </message>
+ <message>
+ <source>Qt Script source files</source>
+ <translation type="obsolete">Qt szkript fájlok</translation>
+ </message>
+ <message>
<location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
- <translation>Qt fordítási forrása (1.1 formátum)</translation>
+ <translation>Qt fordítási fájlok (1.1-es formátum)</translation>
</message>
<message>
<location line="+8"/>
<source>Qt translation sources (format 2.0)</source>
- <translation>Qt fordítás források (2.0 formátum)</translation>
+ <translation>Qt fordítási fájlok (2.0-ás formátum)</translation>
</message>
<message>
<location line="+9"/>
<source>Qt translation sources (latest format)</source>
- <translation>Qt fordítási források (legutolsó formátum)</translation>
+ <translation>Qt fordítási fájlok (legújabb formátum)</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+827"/>
+ <source>Qt Designer form files</source>
+ <translation type="obsolete">Qt Designer űrlapfájlok</translation>
+ </message>
+ <message>
+ <source>Qt Jambi form files</source>
+ <translation type="obsolete">Qt Jambi űrlapfájlok</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+829"/>
<source>XLIFF localization files</source>
<translation>XLIFF lokalizációs fájlok</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qph.cpp" line="+183"/>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+195"/>
<source>Qt Linguist &apos;Phrase Book&apos;</source>
- <translation>Qt Linguist &apos;Társalgási Könyv&apos;</translation>
+ <translation>Qt Linguist &apos;Kifejezéstár&apos;</translation>
</message>
</context>
<context>
@@ -1848,17 +1937,17 @@ Sor: %2</translation>
<message>
<location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/>
<source>&lt;i&gt;Source code not available&lt;/i&gt;</source>
- <translation>&lt;i&gt;A forrás kód nem elérhető&lt;/i&gt;</translation>
+ <translation>&lt;i&gt;A forráskód nem elérhető&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;A(z) %1 fájl nem elérhető&lt;/i&gt;</translation>
+ <translation>&lt;i&gt;A fájl (%1) nem elérhető&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;A(z) %1 fájl nem olvasható&lt;/i&gt;</translation>
+ <translation>&lt;i&gt;A fájl (%1) nem olvasható&lt;/i&gt;</translation>
</message>
</context>
<context>
@@ -1886,17 +1975,17 @@ Sor: %2</translation>
<message>
<location/>
<source>Words:</source>
- <translation>Szavak:</translation>
+ <translation>Szavak száma:</translation>
</message>
<message>
<location/>
<source>Characters:</source>
- <translation>Karakterek:</translation>
+ <translation>Karakterek száma:</translation>
</message>
<message>
<location/>
<source>Characters (with spaces):</source>
- <translation>Karakterek (szóközökkel):</translation>
+ <translation>Karakterek száma (szóközökkel):</translation>
</message>
<message>
<location/>
@@ -1905,16 +1994,25 @@ Sor: %2</translation>
</message>
</context>
<context>
+ <name>TrWindow</name>
+ <message>
+ <location filename="../tools/linguist/linguist/trwindow.cpp" line="+14"/>
+ <source></source>
+ <comment>This is the application&apos;s main window.</comment>
+ <translation></translation>
+ </message>
+</context>
+<context>
<name>TranslateDialog</name>
<message>
<location filename="../tools/linguist/linguist/translatedialog.ui"/>
<source>This window allows you to search for some text in the translation source file.</source>
- <translation>Ez az ablak engedélyezi, hogy rákeressen néhány szövegre a fordítási forrás fájlban.</translation>
+ <translation>Ebben az ablakban kereshetsz a fordítás forrásfájljában.</translation>
</message>
<message>
<location/>
<source>Type in the text to search for.</source>
- <translation>Gépelje be a keresni kívánt szöveget.</translation>
+ <translation>Írd be a keresett szöveget.</translation>
</message>
<message>
<location/>
@@ -1924,32 +2022,32 @@ Sor: %2</translation>
<message>
<location/>
<source>&amp;Translate to:</source>
- <translation>&amp;Fordítás erre:</translation>
+ <translation>Fordí&amp;tása:</translation>
</message>
<message>
<location/>
<source>Search options</source>
- <translation>Keresés opciók</translation>
+ <translation>Keresési opciók</translation>
</message>
<message>
<location/>
<source>Texts such as &apos;TeX&apos; and &apos;tex&apos; are considered as different when checked.</source>
- <translation>&apos;TeX&apos; és &apos;text&apos; szövegek különbözően kezelése bejelöléskor.</translation>
+ <translation>Kis- és nagybetű érzékeny keresés.</translation>
</message>
<message>
<location/>
<source>Match &amp;case</source>
- <translation>Megegyező &amp;eset</translation>
+ <translation>Kis/nagy&amp;betű</translation>
</message>
<message>
<location/>
<source>Mark new translation as &amp;finished</source>
- <translation>Új fordítások &amp;befejezettként jelölése</translation>
+ <translation>Új fordítás megjelölése be&amp;fejezettként</translation>
</message>
<message>
<location/>
<source>Click here to find the next occurrence of the text you typed in.</source>
- <translation>Kattintson ide a begépelt szöveg következő előfordulásának megkereséséhez.</translation>
+ <translation>Kattints ide a megadott szöveg következő előfordulásának megkereséséhez.</translation>
</message>
<message>
<location/>
@@ -1964,31 +2062,31 @@ Sor: %2</translation>
<message>
<location/>
<source>Translate All</source>
- <translation>Az összes fordítása</translation>
+ <translation>Összes fordítása</translation>
</message>
<message>
<location/>
<source>Click here to close this window.</source>
- <translation>Kattintson ide az ablak bezárásához.</translation>
+ <translation>Kattints ide az ablak bezárásához.</translation>
</message>
<message>
<location/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
</context>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+93"/>
<source>Any Country</source>
- <translation>Bármeny ország</translation>
+ <translation>Bármely ország</translation>
</message>
<message>
- <location line="+11"/>
+ <location line="-22"/>
<location line="+8"/>
<source>Settings for &apos;%1&apos; - Qt Linguist</source>
- <translation>&apos;%1&apos;-re állítás - Qt Linguist</translation>
+ <translation>&apos;%1&apos; beállításai - Qt Linguist</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/translationsettings.ui"/>
@@ -2003,7 +2101,7 @@ Sor: %2</translation>
<message>
<location/>
<source>Country/Region</source>
- <translation>OrszágRégió</translation>
+ <translation>Ország/Régió</translation>
</message>
<message>
<location/>
diff --git a/translations/linguist_ru.ts b/translations/linguist_ru.ts
index 3f26c49..625a0f1 100644
--- a/translations/linguist_ru.ts
+++ b/translations/linguist_ru.ts
@@ -290,19 +290,19 @@ Will assume a single universal form.</source>
<location filename="../tools/linguist/linguist/messageeditorwidgets.cpp" line="+302"/>
<source>Alt+Delete</source>
<extracomment>translate, but don&apos;t change</extracomment>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Shift+Alt+Insert</source>
<extracomment>translate, but don&apos;t change</extracomment>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Alt+Insert</source>
<extracomment>translate, but don&apos;t change</extracomment>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+131"/>
@@ -312,7 +312,7 @@ Will assume a single universal form.</source>
<message>
<location line="+1"/>
<source>Delete non-empty length variant?</source>
- <translation>Удалить непустой вариант длины?</translation>
+ <translation>Удалить вариант перевода?</translation>
</message>
</context>
<context>
@@ -320,7 +320,7 @@ Will assume a single universal form.</source>
<message numerus="yes">
<location filename="../tools/linguist/shared/qm.cpp" line="+763"/>
<source>Dropped %n message(s) which had no ID.</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Удалено %n сообщение, у которого не было ID.</numerusform>
<numerusform>Удалено %n сообщения, у которых не было ID.</numerusform>
<numerusform>Удалено %n сообщений, у которых не было ID.</numerusform>
@@ -329,7 +329,7 @@ Will assume a single universal form.</source>
<message numerus="yes">
<location line="+4"/>
<source>Excess context/disambiguation dropped from %n message(s).</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Удалён лишний контекст из %n сообщения.</numerusform>
<numerusform>Удалён лишний контекст из %n сообщений.</numerusform>
<numerusform>Удалён лишний контекст из %n сообщений.</numerusform>
@@ -481,12 +481,12 @@ Skip loading the first named file?</source>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+15"/>
- <location line="+1165"/>
+ <location line="+1187"/>
<source>Release</source>
<translation>Скомпилировать</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1164"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1186"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation>Скомпилированные файлы перевода для приложений Qt (*.qm)
@@ -553,7 +553,7 @@ All files (*)</source>
<location line="+34"/>
<location line="+24"/>
<location line="+22"/>
- <location line="+516"/>
+ <location line="+538"/>
<location line="+1"/>
<location line="+274"/>
<location line="+40"/>
@@ -562,7 +562,7 @@ All files (*)</source>
<translation>Qt Linguist</translation>
</message>
<message>
- <location line="-1198"/>
+ <location line="-1220"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation>Не удалось найти строку &apos;%1&apos;.</translation>
@@ -693,7 +693,7 @@ All files (*)</source>
<translation>Непереведённых записей не осталось.</translation>
</message>
<message>
- <location line="+176"/>
+ <location line="+198"/>
<source>&amp;Window</source>
<translation>&amp;Окно</translation>
</message>
@@ -705,7 +705,7 @@ All files (*)</source>
<message>
<location line="+1"/>
<source>Ctrl+M</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location line="+12"/>
@@ -969,7 +969,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+O</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -984,7 +984,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+Q</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1024,7 +1024,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+P</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1039,7 +1039,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+Z</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1054,7 +1054,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+Y</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1069,7 +1069,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+X</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1084,7 +1084,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+C</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1099,7 +1099,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+V</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1114,7 +1114,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+A</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1129,7 +1129,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+F</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1144,7 +1144,7 @@ All files (*)</source>
<message>
<location/>
<source>F3</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1159,7 +1159,7 @@ All files (*)</source>
<message>
<location/>
<source>Length Variants</source>
- <translation>Варианты длины</translation>
+ <translation>Варианты перевода</translation>
</message>
<message>
<location/>
@@ -1169,7 +1169,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+K</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1184,7 +1184,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+J</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1199,7 +1199,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+Shift+K</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1214,7 +1214,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+Shift+J</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1239,7 +1239,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+B</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1294,7 +1294,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+N</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1309,7 +1309,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+H</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1349,7 +1349,7 @@ All files (*)</source>
<message>
<location/>
<source>F1</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1363,11 +1363,6 @@ All files (*)</source>
</message>
<message>
<location/>
- <source>Display information about the Qt toolkit by Trolltech.</source>
- <translation>Показать информацию об инструментарии Qt от Nokia.</translation>
- </message>
- <message>
- <location/>
<source>&amp;What&apos;s This?</source>
<translation>&amp;Что это?</translation>
</message>
@@ -1384,7 +1379,7 @@ All files (*)</source>
<message>
<location/>
<source>Shift+F1</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1414,7 +1409,7 @@ All files (*)</source>
<message>
<location/>
<source>F5</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1424,7 +1419,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+T</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1439,7 +1434,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+S</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1454,7 +1449,7 @@ All files (*)</source>
<message>
<location/>
<source>Ctrl+W</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location/>
@@ -1506,6 +1501,11 @@ All files (*)</source>
<source>Toggle the validity check of place markers</source>
<translation>Переключение проверки маркеров форматирования</translation>
</message>
+ <message>
+ <location/>
+ <source>Display information about the Qt toolkit by Nokia.</source>
+ <translation>Показать информацию об инструментарии Qt от Nokia.</translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
@@ -1795,7 +1795,7 @@ Line: %2</source>
<context>
<name>QObject</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1842"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1864"/>
<source>Translation files (%1);;</source>
<translation>Файлы перевода (%1);;</translation>
</message>
@@ -1816,11 +1816,16 @@ Line: %2</source>
<translation>Qt Linguist</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+658"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+817"/>
<source>GNU Gettext localization files</source>
<translation>Файлы локализации GNU Gettext</translation>
</message>
<message>
+ <location line="+7"/>
+ <source>GNU Gettext localization template files</source>
+ <translation>Файлы шаблонов локализации GNU Gettext</translation>
+ </message>
+ <message>
<location filename="../tools/linguist/shared/qm.cpp" line="+12"/>
<source>Compiled Qt translations</source>
<translation>Скомпилированные переводы Qt</translation>
@@ -1846,7 +1851,7 @@ Line: %2</source>
<translation>Исходные файлы перевода Qt (последний формат)</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+827"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+829"/>
<source>XLIFF localization files</source>
<translation>Файлы локализации XLIFF</translation>
</message>
diff --git a/translations/qt_help_hu.ts b/translations/qt_help_hu.ts
index 3fbe0e9..4107a2e 100644
--- a/translations/qt_help_hu.ts
+++ b/translations/qt_help_hu.ts
@@ -4,85 +4,108 @@
<context>
<name>QCLuceneResultWidget</name>
<message>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
<source>Search Results</source>
- <translation>Keresési eredmény</translation>
+ <translation>Keresési eredmények</translation>
</message>
<message>
+ <location line="+7"/>
<source>Note:</source>
+ <translatorcomment>CHECKIT</translatorcomment>
<translation>Megjegyzés:</translation>
</message>
<message>
+ <location line="+1"/>
<source>The search results may not be complete since the documentation is still being indexed!</source>
- <translation>A keresési eredmény lehet, hogy nem teljes, mivel a dokumentáció még mindig indexelvan van!</translation>
+ <translation>A keresés eredménye hiányos lehet, mert a dokumentáció indexelés alatt van!</translation>
</message>
<message>
+ <location line="+11"/>
<source>Your search did not match any documents.</source>
- <translation>A keresési feltételeknek megfelően nincs találat.</translation>
+ <translation>Nincs a keresési feltételeknek megfelelő dokumentum.</translation>
</message>
<message>
+ <location line="+4"/>
<source>(The reason for this might be that the documentation is still being indexed.)</source>
- <translation>(Ennek az oka az lehet, hogy a dokumentáció még mindig indexelve van.)</translation>
+ <translation>(Ez amiatt lehet, hogy a dokumentáció indexelése még nincs befejezve.)</translation>
</message>
</context>
<context>
<name>QHelpCollectionHandler</name>
<message>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file &apos;%1&apos; is not set up yet!</source>
- <translation>A(z) &apos;%1&apos;gyűjtemény fájl még nincs beállítva!</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>A(z) &apos;%1&apos;gyűjteményfájl még nincs beállítva!</translation>
</message>
<message>
+ <location line="+23"/>
<source>Cannot load sqlite database driver!</source>
- <translation>Nem lehet betölteni az sqlite adatbázis vezérlőt!</translation>
+ <translation>Az sqlite adatbázisvezérlő nem tölthető be!</translation>
</message>
<message>
+ <location line="+11"/>
+ <location line="+52"/>
<source>Cannot open collection file: %1</source>
<translation>Nem lehet megnyitni a gyűjtemény fájlt: %1</translation>
</message>
<message>
+ <location line="-40"/>
<source>Cannot create tables in file %1!</source>
- <translation>Nem lehet lehet a(z) %1 fájlban táblákat létrehozni!</translation>
+ <translation>Nem sikerült táblákat létrehozni a(z) %1 fájlban!</translation>
</message>
<message>
+ <location line="+16"/>
<source>The collection file &apos;%1&apos; already exists!</source>
<translation>A(z) &apos;%1&apos; gyűjtemény fájl már létezik!</translation>
</message>
<message>
+ <location line="+151"/>
<source>Unknown filter &apos;%1&apos;!</source>
- <translation>Ismeretlen szűrő &apos;%1&apos;!</translation>
+ <translation>Ismeretlen szűrő: &apos;%1&apos;!</translation>
</message>
<message>
+ <location line="+103"/>
<source>Invalid documentation file &apos;%1&apos;!</source>
<translation>Érvénytelen dokumentációs fájl &apos;%1&apos;!</translation>
</message>
<message>
+ <location line="+167"/>
<source>Cannot register namespace &apos;%1&apos;!</source>
- <translation>Nem lehet regisztrálni a(z) &apos;%1&apos; névteret!</translation>
+ <translation>A(z) &apos;%1&apos; névtér regisztrálása nem sikerült!</translation>
</message>
<message>
+ <location line="+24"/>
<source>Cannot open database &apos;%1&apos; to optimize!</source>
<translation>Nem lehet optimalizálásra megnyitni a(z) &apos;%1&apos; adatbázist!</translation>
</message>
<message>
+ <location line="-439"/>
<source>Cannot create directory: %1</source>
- <translation>Nem lehet a könyvtárat létrehozni: %1</translation>
+ <translation>A könyvtár létrehozása sikertelen: %1</translation>
</message>
<message>
+ <location line="+26"/>
<source>Cannot copy collection file: %1</source>
- <translation>Nem lehet a gyűjtemény fájlt másolni: %1</translation>
+ <translation>A gyűjtemény fájl másolása sikertelen: %1</translation>
</message>
<message>
+ <location line="+172"/>
<source>Cannot register filter %1!</source>
- <translation>Nem lehet regisztrálni a(z) %1 szűrőt!</translation>
+ <translation>A(z) %1 szűrő regisztrálása sikertelen!</translation>
</message>
<message>
+ <location line="+44"/>
<source>Cannot open documentation file %1!</source>
- <translation>Nem lehet megnyitni a(z) %1 dokumentációs fájlt!</translation>
+ <translation>A(z) %1 dokumentációs fájl megnyitása sikertelen!</translation>
</message>
<message>
+ <location line="+40"/>
<source>The namespace %1 was not registered!</source>
<translation>A(z) %1 névteret nem regisztrálták!</translation>
</message>
<message>
+ <location line="+120"/>
<source>Namespace %1 already exists!</source>
<translation>A(z) %1 névtér már létezik!</translation>
</message>
@@ -90,209 +113,333 @@
<context>
<name>QHelpDBReader</name>
<message>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+98"/>
<source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
+ <extracomment>The placeholders are: %1 - The name of the database which cannot be opened %2 - The unique id for the connection %3 - The actual error string</extracomment>
<translation>Nem lehet megnyitni az adatbázist &apos;%1&apos; &apos;%2&apos;: %3</translation>
</message>
</context>
<context>
<name>QHelpEngineCore</name>
<message>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+122"/>
+ <source>Cannot open documentation file %1: %2!</source>
+ <translation>Nem lehet megnyitni a(z) %1 fájlt: %2!</translation>
+ </message>
+ <message>
+ <location line="+404"/>
<source>The specified namespace does not exist!</source>
- <translation>A meghatározott névtér nem létezik!</translation>
+ <translation>A megadott névtér nem létezik!</translation>
</message>
</context>
<context>
<name>QHelpEngineCorePrivate</name>
<message>
<source>Cannot open documentation file %1: %2!</source>
- <translation>Nem lehet megnyitni a(z) %1 fájlt: %2!</translation>
+ <translation type="obsolete">Nem lehet megnyitni a(z) %1 fájlt: %2!</translation>
</message>
</context>
<context>
<name>QHelpGenerator</name>
<message>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+158"/>
<source>Invalid help data!</source>
- <translation>Érvénytelen segítség adat!</translation>
+ <translation>Érvénytelen súgó adat!</translation>
</message>
<message>
+ <location line="+6"/>
<source>No output file name specified!</source>
- <translation>Nincsen kimeneti fájl meghatározva!</translation>
+ <translation>Nincsen kimeneti fájl megadva!</translation>
</message>
<message>
+ <location line="+14"/>
<source>Building up file structure...</source>
<translation>Fájl struktúra felépítése...</translation>
</message>
<message>
+ <location line="-7"/>
<source>The file %1 cannot be overwritten!</source>
- <translation>Nem lehet felülírni a(z) %1 fájlt!</translation>
+ <translation>A(z) %1 fájl felülírása sikertelen!</translation>
</message>
<message>
+ <location line="+18"/>
<source>Cannot open data base file %1!</source>
- <translation>Nem lehet megnyitni a(z) %1 adatbázis fájlt!</translation>
+ <translation>A(z) %1 adatbázis fájl megnyitása sikertelen!</translation>
</message>
<message>
+ <location line="+14"/>
<source>Cannot register namespace %1!</source>
<translation>Nem lehet regisztrálni a(z) %1 névteret!</translation>
</message>
<message>
+ <location line="+6"/>
<source>Insert custom filters...</source>
- <translation>Szokásos szűrő beszúrása...</translation>
+ <translation>Egyedi szűrő hozzáadása...</translation>
</message>
<message>
+ <location line="+12"/>
<source>Insert help data for filter section (%1 of %2)...</source>
- <translation>Segítség adatok beszúrása a szűrő szegmens számára (%1 %2-től)...</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location line="+18"/>
<source>Documentation successfully generated.</source>
- <translation>A dokumentáció legenerálása sikeresen lezajlott.</translation>
+ <translation>A dokumentáció generálása sikerült.</translation>
</message>
<message>
+ <location line="+76"/>
<source>Some tables already exist!</source>
<translation>Néhány tábla már létezik!</translation>
</message>
<message>
+ <location line="+61"/>
<source>Cannot create tables!</source>
- <translation>Nem lehet a táblákat létrehozni!</translation>
+ <translation>Nem lehet táblákat létrehozni!</translation>
</message>
<message>
+ <location line="+86"/>
<source>Cannot register virtual folder!</source>
- <translation>Nem lehet registrálni a virtuális dossziét!</translation>
+ <translation>Nem lehet regisztrálni virtuális mappát!</translation>
</message>
<message>
+ <location line="+10"/>
<source>Insert files...</source>
<translation>Fájlok beszúrása...</translation>
</message>
<message>
+ <location line="+42"/>
<source>The referenced file %1 must be inside or within a subdirectory of (%2). Skipping it.</source>
- <translation>A(z) %1 hivatkozott fájlnak a(z) (%2) alkönyvtárán belül kell elhelyezkednie. Ennek kihagyása.</translation>
+ <translation>A(z) %1 hivatkozott fájlnak a(z) (%2) alkönyvtárán belül kell elhelyezkednie. A fájl kihagyása.</translation>
</message>
<message>
+ <location line="+7"/>
<source>The file %1 does not exist! Skipping it.</source>
- <translation>A(z) %1 fájl nem létezik! Ennek kihagyása.</translation>
+ <translation>A(z) %1 fájl nem létezik! A fájl kihagyása.</translation>
</message>
<message>
+ <location line="+6"/>
<source>Cannot open file %1! Skipping it.</source>
- <translation>Nem lehet megnyitni a(z) %1 fájlt! Ennek kihagyása.</translation>
+ <translation>Nem lehet megnyitni a(z) %1 fájlt! A fájl kihagyása.</translation>
</message>
<message>
+ <location line="+133"/>
<source>The filter %1 is already registered!</source>
<translation>A(z) %1 szűrő már regisztrálva van!</translation>
</message>
<message>
+ <location line="+5"/>
<source>Cannot register filter %1!</source>
- <translation>Nem lehet regisztrálni a(z) %1 szűrőt!</translation>
+ <translation>Az) %1 szűrő regisztrálása sikertelen!</translation>
</message>
<message>
+ <location line="+24"/>
<source>Insert indices...</source>
<translation>Indexek beszúrása...</translation>
</message>
<message>
+ <location line="+91"/>
<source>Insert contents...</source>
<translation>Tartalom beszúrása...</translation>
</message>
<message>
+ <location line="+8"/>
<source>Cannot insert contents!</source>
- <translation>Nem lehet beszúrni a tartalmat!</translation>
+ <translation>A tartalom beszúrása sikertelen!</translation>
</message>
<message>
+ <location line="+12"/>
<source>Cannot register contents!</source>
- <translation>Nem lehet regisztrálni a tartalmat!</translation>
+ <translation>A tartalom regisztrálása sikertelen!</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>File &apos;%1&apos; does not exist.</source>
+ <translation>A(z) &apos;%1&apos; fájl nem létezik.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>File &apos;%1&apos; cannot be opened.</source>
+ <translation>A(z) &apos;%1&apos; nem nyitható meg.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>File &apos;%1&apos; contains an invalid link to file &apos;%2&apos;</source>
+ <translation>A(z) &apos;%1&apos; érvénytelen hivatkozást tartalmaz a(z) &apos;%2&apos; fájlra</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid links in HTML files.</source>
+ <translation>Érvénytelen hivatkozások a HTML fájlokban.</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpProject</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+88"/>
+ <source>Unknown token.</source>
+ <translation>Ismeretlen token.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unknown token. Expected &quot;QtHelpProject&quot;!</source>
+ <translation>Ismeretlen token. A várt: &quot;QtHelpProject&quot;!</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Error in line %1: %2</source>
+ <translation>Hiba a(z) %1. sorban: %2</translation>
+ </message>
+ <message>
+ <source>A virtual folder must not contain a &apos;/&apos; character!</source>
+ <translation type="obsolete">A virtuális mappa neve nem tartalmazhat &apos;/&apos; karaktert!</translation>
+ </message>
+ <message>
+ <source>A namespace must not contain a &apos;/&apos; character!</source>
+ <translation type="obsolete">A névtér neve nem tartalmazhat &apos;/&apos; karaktert!</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Virtual folder has invalid syntax.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Namespace has invalid syntax.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Missing namespace in QtHelpProject.</source>
+ <translation>Hiányzó névtér a QtHelpProject-ben.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Missing virtual folder in QtHelpProject</source>
+ <translation>Hiányzó virtuális mappa a QtHelpProject-ben</translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>Missing attribute in keyword at line %1.</source>
+ <translation>Hiányzó attirbútum a kulcsszóban a(z) %1 sorban.</translation>
+ </message>
+ <message>
+ <location line="+141"/>
+ <source>The input file %1 could not be opened!</source>
+ <translation>A(z) %1 bemeneti fájl megnyitása sikertelen!</translation>
</message>
</context>
<context>
<name>QHelpSearchQueryWidget</name>
<message>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+124"/>
<source>Search for:</source>
- <translation>Keresés erre:</translation>
+ <translation>Ezt keresi:</translation>
</message>
<message>
+ <location line="+1"/>
<source>Previous search</source>
- <translation>Előző keresése</translation>
+ <translation>Előző találat</translation>
</message>
<message>
+ <location line="+1"/>
<source>Next search</source>
- <translation>Következő keresése</translation>
+ <translation>Következő találat</translation>
</message>
<message>
+ <location line="+1"/>
<source>Search</source>
<translation>Keresés</translation>
</message>
<message>
+ <location line="+2"/>
<source>Advanced search</source>
<translation>Összetett keresés</translation>
</message>
<message>
+ <location line="+1"/>
<source>words &lt;B&gt;similar&lt;/B&gt; to:</source>
- <translation>szavak &lt;B&gt;hasonlóak&lt;/B&gt; ehhez:</translation>
+ <translation>szavak, melyek &lt;B&gt;hasonlóak&lt;/B&gt; ehhez:</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt;B&gt;without&lt;/B&gt; the words:</source>
<translation>Ezen szavak &lt;B&gt;nélkül&lt;/B&gt;:</translation>
</message>
<message>
+ <location line="+1"/>
<source>with &lt;B&gt;exact phrase&lt;/B&gt;:</source>
<translation>&lt;B&gt;Pontos kifejezés&lt;/B&gt;:</translation>
</message>
<message>
+ <location line="+1"/>
<source>with &lt;B&gt;all&lt;/B&gt; of the words:</source>
<translation>Ezen szavak&lt;B&gt;mindegyikével&lt;/B&gt;:</translation>
</message>
<message>
+ <location line="+1"/>
<source>with &lt;B&gt;at least one&lt;/B&gt; of the words:</source>
<translation>&lt;B&gt;Legalább egy&lt;/B&gt; a következő szavak közül:</translation>
</message>
</context>
<context>
<name>QHelpSearchResultWidget</name>
+ <message numerus="yes">
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+174"/>
+ <source>%1 - %2 of %n Hits</source>
+ <translation>
+ <numerusform>%1 - %2. a(z) %n találatból</numerusform>
+ </translation>
+ </message>
<message>
+ <location line="+61"/>
<source>0 - 0 of 0 Hits</source>
- <translation>0 találat 0 - 0</translation>
+ <translation>0 - 0. a 0 találatból</translation>
</message>
</context>
<context>
<name>QHelpSearchResultWidgetPrivate</name>
<message>
<source>%1 - %2 of %3 Hits</source>
- <translation>%3 Találat %1 - %2</translation>
+ <translation type="obsolete">%1 - %2. a(z) %3 találatból</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Unknown token.</source>
- <translation>Ismeretlen jel.</translation>
+ <translation type="obsolete">Ismeretlen token.</translation>
</message>
<message>
<source>Unknown token. Expected &quot;QtHelpProject&quot;!</source>
- <translation>Ismeretlen hel. &quot;QtSegítségProjekt&quot; várt!</translation>
+ <translation type="obsolete">Ismeretlen token. &quot;QtHelpProject&quot; várt!</translation>
</message>
<message>
<source>Error in line %1: %2</source>
- <translation>Hiba a(z) %1 sorban: %2</translation>
+ <translation type="obsolete">Hiba a(z) %1. sorban: %2</translation>
</message>
<message>
<source>A virtual folder must not contain a &apos;/&apos; character!</source>
- <translation>A virtuális dosszié nem tartalmazhat &apos;/&apos; karaktert!</translation>
+ <translation type="obsolete">A virtuális mappa neve nem tartalmazhat &apos;/&apos; karaktert!</translation>
</message>
<message>
<source>A namespace must not contain a &apos;/&apos; character!</source>
- <translation>A névtér nem tartalmazhat &apos;/&apos; karaktert!</translation>
+ <translation type="obsolete">A névtér neve nem tartalmazhat &apos;/&apos; karaktert!</translation>
</message>
<message>
<source>Missing namespace in QtHelpProject.</source>
- <translation>Hiányzó névtér a QtSegítségProjektben.</translation>
+ <translation type="obsolete">Hiányzó névtér a QtHelpProject-ben.</translation>
</message>
<message>
<source>Missing virtual folder in QtHelpProject</source>
- <translation>Hiányzó virtuális dosszié a QtSegítségProjektben</translation>
+ <translation type="obsolete">Hiányzó virtuális mappa a QtHelpProject-ben.</translation>
</message>
<message>
<source>Missing attribute in keyword at line %1.</source>
- <translation>Hiányzó attirbútum a kulcsszóban a(z) %1 sorban.</translation>
+ <translation type="obsolete">Hiányzó attirbútum a kulcsszóban a(z) %1 sorban.</translation>
</message>
<message>
<source>The input file %1 could not be opened!</source>
- <translation>Nem sikerült megnyitni a(z) %1 bemeneti fájlt!</translation>
+ <translation type="obsolete">A(z) %1 bemeneti fájl megnyitása sikertelen!</translation>
</message>
</context>
</TS>
diff --git a/translations/qt_help_ru.ts b/translations/qt_help_ru.ts
index 341cf19..f1aa0fa 100644
--- a/translations/qt_help_ru.ts
+++ b/translations/qt_help_ru.ts
@@ -34,7 +34,7 @@
<message>
<location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file &apos;%1&apos; is not set up yet!</source>
- <translation type="unfinished">Файл набора &apos;%1&apos; ещё не установлен!</translation>
+ <translation>Файл коллекции справки &apos;%1&apos; ещё не установлен!</translation>
</message>
<message>
<location line="+23"/>
@@ -43,9 +43,9 @@
</message>
<message>
<location line="+11"/>
- <location line="+49"/>
+ <location line="+52"/>
<source>Cannot open collection file: %1</source>
- <translation type="unfinished">Не удалось открыть файл набора: %1</translation>
+ <translation>Не удалось открыть файл коллекции справки: %1</translation>
</message>
<message>
<location line="-40"/>
@@ -55,15 +55,15 @@
<message>
<location line="+16"/>
<source>The collection file &apos;%1&apos; already exists!</source>
- <translation type="unfinished">Файл набора &apos;%1&apos; уже существует!</translation>
+ <translation>Файл коллекции справки &apos;%1&apos; уже существует!</translation>
</message>
<message>
- <location line="+148"/>
+ <location line="+151"/>
<source>Unknown filter &apos;%1&apos;!</source>
<translation>Неизвестный фильтр &apos;%1&apos;!</translation>
</message>
<message>
- <location line="+105"/>
+ <location line="+103"/>
<source>Invalid documentation file &apos;%1&apos;!</source>
<translation>Некорректный файл документации &apos;%1&apos;!</translation>
</message>
@@ -78,17 +78,17 @@
<translation>Не удалось открыть базу данных &apos;%1&apos; для оптимизации!</translation>
</message>
<message>
- <location line="-438"/>
+ <location line="-439"/>
<source>Cannot create directory: %1</source>
<translation>Не удалось создать каталог: %1</translation>
</message>
<message>
- <location line="+23"/>
+ <location line="+26"/>
<source>Cannot copy collection file: %1</source>
- <translation type="unfinished">Не удалось скопировать файл набора: %1</translation>
+ <translation>Не удалось скопировать файл коллекции справки: %1</translation>
</message>
<message>
- <location line="+174"/>
+ <location line="+172"/>
<source>Cannot register filter %1!</source>
<translation>Не удалось зарегистрировать фильтр %1!</translation>
</message>
@@ -120,23 +120,20 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+525"/>
- <source>The specified namespace does not exist!</source>
- <translation>Указанное пространство имён не существует!</translation>
- </message>
-</context>
-<context>
- <name>QHelpEngineCorePrivate</name>
- <message>
- <location line="-403"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+122"/>
<source>Cannot open documentation file %1: %2!</source>
<translation>Не удалось открыть файл документации %1: %2!</translation>
</message>
+ <message>
+ <location line="+404"/>
+ <source>The specified namespace does not exist!</source>
+ <translation>Указанное пространство имён не существует!</translation>
+ </message>
</context>
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+158"/>
<source>Invalid help data!</source>
<translation>Некорректные данные справки!</translation>
</message>
@@ -161,7 +158,7 @@
<translation>Не удалось открыть файл базы данных %1!</translation>
</message>
<message>
- <location line="+11"/>
+ <location line="+14"/>
<source>Cannot register namespace %1!</source>
<translation>Не удалось зарегистрировать пространство имён %1!</translation>
</message>
@@ -216,7 +213,7 @@
<translation>Не удалось открыть файл %1! Пропускаем.</translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+133"/>
<source>The filter %1 is already registered!</source>
<translation>Фильтр %1 уже зарегистрирован!</translation>
</message>
@@ -231,7 +228,7 @@
<translation>Добавление указателей...</translation>
</message>
<message>
- <location line="+80"/>
+ <location line="+91"/>
<source>Insert contents...</source>
<translation>Добавление оглавления...</translation>
</message>
@@ -245,11 +242,79 @@
<source>Cannot register contents!</source>
<translation>Не удалось зарегистрировать оглавление!</translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>File &apos;%1&apos; does not exist.</source>
+ <translation>Файл &apos;%1&apos; не существует.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>File &apos;%1&apos; cannot be opened.</source>
+ <translation>Невозможно открыть файл &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>File &apos;%1&apos; contains an invalid link to file &apos;%2&apos;</source>
+ <translation>Файл &apos;%1&apos; содержит некорректную ссылку на файл &apos;%2&apos;</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid links in HTML files.</source>
+ <translation>В файлах HTML обнаружены некорректные ссылки.</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpProject</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+88"/>
+ <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="+6"/>
+ <source>Error in line %1: %2</source>
+ <translation>Ошибка в строке %1: %2</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Virtual folder has invalid syntax.</source>
+ <translation>Виртуальный каталог имеет некорректный синтаксис.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Namespace has invalid syntax.</source>
+ <translation>Пространство имён имеет некорректный синтаксис.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Missing namespace in QtHelpProject.</source>
+ <translation>В QtHelpProject отсутствует пространство имён.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Missing virtual folder in QtHelpProject</source>
+ <translation>В QtHelpProject отсутствует виртуальный каталог</translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>Missing attribute in keyword at line %1.</source>
+ <translation>Отсутствует атрибут у ключевого слова в строке %1.</translation>
+ </message>
+ <message>
+ <location line="+141"/>
+ <source>The input file %1 could not be opened!</source>
+ <translation>Невозможно открыть исходный файл %1!</translation>
+ </message>
</context>
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+125"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+124"/>
<source>Search for:</source>
<translation>Искать:</translation>
</message>
@@ -301,66 +366,19 @@
</context>
<context>
<name>QHelpSearchResultWidget</name>
+ <message numerus="yes">
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+174"/>
+ <source>%1 - %2 of %n Hits</source>
+ <translation>
+ <numerusform>%1 - %2 из %n совпадения</numerusform>
+ <numerusform>%1 - %2 из %n совпадений</numerusform>
+ <numerusform>%1 - %2 из %n совпадений</numerusform>
+ </translation>
+ </message>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
+ <location line="+61"/>
<source>0 - 0 of 0 Hits</source>
<translation>0 - 0 из 0 совпадений</translation>
</message>
</context>
-<context>
- <name>QHelpSearchResultWidgetPrivate</name>
- <message>
- <location line="-61"/>
- <source>%1 - %2 of %3 Hits</source>
- <translation>%1 - %2 из %3 совпадений</translation>
- </message>
-</context>
-<context>
- <name>QObject</name>
- <message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+85"/>
- <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>
- <message>
- <location line="+13"/>
- <source>A virtual folder must not contain a &apos;/&apos; character!</source>
- <translation>Виртуальный каталог не должен содержать символ &apos;/&apos;!</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>A namespace must not contain a &apos;/&apos; character!</source>
- <translation>Пространство имён не должно содержать символ &apos;/&apos;!</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="+123"/>
- <source>The input file %1 could not be opened!</source>
- <translation>Невозможно открыть исходный файл %1!</translation>
- </message>
-</context>
</TS>
diff --git a/translations/qt_hu.ts b/translations/qt_hu.ts
index ecc9826..9ee3b32 100644
--- a/translations/qt_hu.ts
+++ b/translations/qt_hu.ts
@@ -2,19 +2,30 @@
<!DOCTYPE TS>
<TS version="2.0" language="hu">
<context>
+ <name>AudioOutput</name>
+ <message>
+ <source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
+ <translation type="obsolete">&lt;html&gt;A hangeszköz &lt;b&gt;%1&lt;/b&gt; most nem használható.&lt;br/&gt;Visszaállás erre: &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <source>Revert back to device &apos;%1&apos;</source>
+ <translation type="obsolete">Visszaállás a(z) &apos;%1&apos; eszközre</translation>
+ </message>
+</context>
+<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2262"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2313"/>
<source>Close Tab</source>
- <translation>Lap bezárása</translation>
+ <translation>Fül bezárása</translation>
</message>
</context>
<context>
<name>FakeReply</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2198"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2278"/>
<source>Fake error !</source>
- <translation>Hamisítási hiba !</translation>
+ <translation>Teszt hiba !</translation>
</message>
<message>
<location line="+3"/>
@@ -23,11 +34,60 @@
</message>
</context>
<context>
+ <name>MAC_APPLICATION_MENU</name>
+ <message>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2346"/>
+ <source>Services</source>
+ <translation>Szolgáltatások</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hide %1</source>
+ <translation>%1 elrejtése</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hide Others</source>
+ <translation>Minden más elrejtése</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show All</source>
+ <translation>Mindet mutat</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Preferences...</source>
+ <translation>Beállítások...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Quit %1</source>
+ <translation>Kilépés: %1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>About %1</source>
+ <translation>%1 névjegye</translation>
+ </message>
+</context>
+<context>
+ <name>PPDOptionsModel</name>
+ <message>
+ <source>Name</source>
+ <translation type="obsolete">Név</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="obsolete">Érték</translation>
+ </message>
+</context>
+<context>
<name>Phonon::</name>
<message>
<location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+55"/>
<source>Notifications</source>
- <translation>Értesítések</translation>
+ <translation>Figyelmeztetések</translation>
</message>
<message>
<location line="+2"/>
@@ -42,7 +102,7 @@
<message>
<location line="+2"/>
<source>Communication</source>
- <translation>Kommunikáció</translation>
+ <translation>Társalgás</translation>
</message>
<message>
<location line="+2"/>
@@ -52,160 +112,502 @@
<message>
<location line="+2"/>
<source>Accessibility</source>
- <translation>Hozzáférhetőség</translation>
+ <translation>Kisegítő lehetőségek</translation>
</message>
</context>
<context>
<name>Phonon::AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+385"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+444"/>
+ <location line="+34"/>
<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;Az audió visszajátszó eszköz &lt;b&gt;%1&lt;/b&gt; nem működik.&lt;br/&gt;Visszavonul ide: &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</translation>
+ <translation>&lt;html&gt;A hangeszköz &lt;b&gt;%1&lt;/b&gt; most nem használható.&lt;br/&gt;Visszaállítás erre: &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</translation>
</message>
<message>
- <location line="+13"/>
+ <location line="-21"/>
<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;Az audió visszajátszó eszközre kapcsolás &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;amely éppen elérhetővé vált és magasabb prioritása van.&lt;/html&gt;</translation>
+ <translation>&lt;html&gt;Visszaállás a(z)&lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;hangeszközre, mert az újra elérhető, és jobban preferált.&lt;/html&gt;</translation>
</message>
<message>
<location line="+3"/>
+ <location line="+14"/>
<source>Revert back to device &apos;%1&apos;</source>
- <translation>Visszatérés a(z) &apos;%1&apos; eszközre</translation>
+ <translation>Visszaállás a(z) &apos;%1&apos; eszközre</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which has higher preference or is specifically configured for this stream.&lt;/html&gt;</source>
+ <translation>&lt;html&gt;Visszaállás a(z)&lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;hangeszközre, mert az jobban preferált, vagy kimondottan ehhez a folyamhoz van konfigurálva.&lt;/html&gt;</translation>
</message>
</context>
<context>
<name>Phonon::Gstreamer::Backend</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+182"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+188"/>
<source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
Some video features have been disabled.</source>
- <translation>Figyelmeztetés: Úgy tűnik nem telepítette megfelelően a gstreamer0.10-plugins csomagot.
- Néhány videó tulajdonság tiltva van.</translation>
+ <translation>Figyelmeztetés: Úgy tűnik, a gstreamer0.10-plugins-good nincs telepítve.
+ Néhány videóval kapcsolatos lehetőség le lesz tiltva.</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>Figyelmeztetés: Úgy tűnik nem telepítette az alap GStreamer beépülő modulokat.
- Az összes audió és videó támogatás tiltva van</translation>
+ <translation>Figyelmeztetés: Úgy tűnik nincs semmilyen GStreamer plugin telepítve.
+ Minden hang és videótámogatás le lesz tiltva</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="obsolete">A lejátszás elindítása sikertelen.
+
+Kérem, ellenőrizze, hogy a libgstreamer-plugins-base
+telepített-e, és a gstreamer beállításai megfelelők-e.</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+93"/>
<source>Cannot start playback.
Check your GStreamer installation and make sure you
have libgstreamer-plugins-base installed.</source>
<translation>Nem lehet elindítani a visszajátszást.
-Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy installálta a libgstreamer-plugins-base csomagot.</translation>
+Ellenőrizze le a GStreamer-t és győzödjön meg róla, hogy telepłtette-e a libgstreamer-plugins-base csomagot.</translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+129"/>
+ <source>Missing codec helper script assistant.</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Hiányzó kodek-súgó script.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Plugin codec installation failed for codec: %0</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Plugin kodek telepítése sikertelen ehhez a kodekhez: %0</translation>
+ </message>
+ <message>
+ <location line="+11"/>
<source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
- <translation>Egy szükséges kódek hiányzik. A következő kódek(ek) telepítése szükséges ennek a tartalomnak a lejátszásához: %0</translation>
+ <translation>Hiányzik egy kodek a lejátszáshoz. Kérem telepítse a következő kodek(eket): %0</translation>
</message>
<message>
- <location line="+702"/>
- <location line="+8"/>
- <location line="+15"/>
- <location line="+26"/>
+ <location line="+730"/>
<location line="+6"/>
- <location line="+19"/>
- <location line="+339"/>
+ <location line="+13"/>
+ <location line="+24"/>
+ <location line="+6"/>
+ <location line="+18"/>
+ <location line="+434"/>
<location line="+24"/>
<source>Could not open media source.</source>
- <translation>Nem sikerült megnyitni a média forrást.</translation>
+ <translation>A médiaforrás megnyitása sikertelen.</translation>
</message>
<message>
- <location line="-424"/>
+ <location line="-514"/>
<source>Invalid source type.</source>
- <translation>Érvénytelen forrás típus.</translation>
+ <translation>Érvénytelen forrás.</translation>
</message>
<message>
- <location line="+398"/>
+ <location line="+488"/>
<source>Could not locate media source.</source>
- <translation>Nem sikerült telepíteni a média forrást.</translation>
+ <translation>A médiaforrás nem található.</translation>
</message>
<message>
<location line="+10"/>
<source>Could not open audio device. The device is already in use.</source>
- <translation>Nem sikerült megnyitni az audió eszközt. Az eszköz már használatban van.</translation>
+ <translation>A hangeszköz megnyitása sikertelen, mert valami már használja.</translation>
</message>
<message>
<location line="+13"/>
<source>Could not decode media source.</source>
- <translation>Nem sikerült dekódolni a forrást.</translation>
+ <translation>A médiaforrás dekódolása sikertelen.</translation>
</message>
</context>
<context>
<name>Phonon::MMF</name>
<message>
- <location filename="../src/3rdparty/phonon/mmf/audiooutput.cpp" line="+108"/>
+ <location filename="../src/3rdparty/phonon/mmf/audiooutput.cpp" line="+103"/>
<source>Audio Output</source>
<translation>Audio kimenet</translation>
</message>
<message>
<location line="+1"/>
<source>The audio output device</source>
- <translation>A kimeneti audió eszköz</translation>
+ <translation>Audio kimenet</translation>
</message>
-</context>
-<context>
- <name>Phonon::MMF::AudioEqualizer</name>
<message>
- <location filename="../src/3rdparty/phonon/mmf/audioequalizer.cpp" line="+75"/>
- <source>Frequency band, %1 Hz</source>
- <translation>Frekvencia sáv, &apos;%1&apos; Hz</translation>
+ <location filename="../src/3rdparty/phonon/mmf/utils.cpp" line="+89"/>
+ <source>No error</source>
+ <translation>Nincs hiba</translation>
</message>
-</context>
-<context>
- <name>Phonon::MMF::EffectFactory</name>
<message>
- <location filename="../src/3rdparty/phonon/mmf/effectfactory.cpp" line="+65"/>
- <source>Audio Equalizer</source>
- <translation>Audió hangszínszabályozó</translation>
+ <location line="+2"/>
+ <source>Not found</source>
+ <translation>Nem található</translation>
</message>
<message>
<location line="+2"/>
- <source>Bass Boost</source>
- <translation>Basszus erősítés</translation>
+ <source>Out of memory</source>
+ <translation>A memória elfogyott</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Not supported</source>
+ <translation>Nem támogatott</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Overflow</source>
+ <translation>Túlcsordulás</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Underflow</source>
+ <translation>Alulcsordulás</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Already exists</source>
+ <translation>Már létezik</translation>
</message>
<message>
<location line="+2"/>
- <source>Distance Attenuation</source>
- <translation>Távcsillapítás</translation>
+ <source>Path not found</source>
+ <translation>Az útvonal nem található</translation>
</message>
<message>
<location line="+2"/>
+ <source>In use</source>
+ <translation>Használatban van</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Not ready</source>
+ <translation>Nincs kész</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Access denied</source>
+ <translation>Hozzáférés megtagadva</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Could not connect</source>
+ <translation>Nem lehet kapcsolódni</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Disconnected</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Szétkapcsolva</translation>
+ </message>
+ <message>
<location line="+2"/>
- <source>Environmental Reverb</source>
- <translation>Környezeti visszhang</translation>
+ <source>Permission denied</source>
+ <translation>Hozzáférés megtagadva</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Insufficient bandwidth</source>
+ <translation>Elégtelen sávszélesség</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Network unavailable</source>
+ <translation>A hálózat nem érhető el</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Network communication error</source>
+ <translation>Hálózati kommunikációs hiba</translation>
</message>
<message>
<location line="+2"/>
- <source>Loudness</source>
- <translation>Hangosság</translation>
+ <source>Streaming not supported</source>
+ <translation>A streaming nem támogatott</translation>
</message>
<message>
<location line="+2"/>
- <source>Source Orientation</source>
- <translation>Forrás orientáció</translation>
+ <source>Server alert</source>
+ <translation>Szerver probléma</translation>
</message>
<message>
<location line="+2"/>
- <source>Stereo Widening</source>
- <translation>Sztereó szélesség</translation>
+ <source>Invalid protocol</source>
+ <translation>Érvénytelen protokoll</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Invalid URL</source>
+ <translation>Érvénytelen URL</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Multicast error</source>
+ <translation>Multicast hiba</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Proxy server error</source>
+ <translation>Proxy szerver hiba</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Proxy server not supported</source>
+ <translation>A proxy szerver nem támogatott</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Audio output error</source>
+ <translation>Hang kimeneti hiba</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Video output error</source>
+ <translation>Video kimeneti hiba</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Decoder error</source>
+ <translation>Dekódolási hiba</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Audio or video components could not be played</source>
+ <translation>A hang vagy a video komponens nem játszható le</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>DRM error</source>
+ <translation>DRM hiba</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unknown error (%1)</source>
+ <translation>Ismeretlen hiba (%1)</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::AbstractMediaPlayer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/abstractmediaplayer.cpp" line="+73"/>
+ <source>Not ready to play</source>
+ <translation>Nem tud még lejátszani</translation>
+ </message>
+ <message>
+ <location line="+161"/>
+ <location line="+10"/>
+ <source>Error opening file</source>
+ <translation>Hiba a fájl megnyitásakor</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Error opening URL</source>
+ <translation>Hiba az URL megnyitásakor</translation>
+ </message>
+ <message>
+ <location line="+83"/>
+ <source>Setting volume failed</source>
+ <translation>A hangerő beállítása sikertelen</translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Loading clip failed</source>
+ <translation>A klip betöltése sikertelen</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Playback complete</source>
+ <translation>A lejátszás befejeződött</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::AbstractVideoPlayer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/abstractvideoplayer.cpp" line="+108"/>
+ <source>Pause failed</source>
+ <translation>A megállítás sikertelen</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Seek failed</source>
+ <translation>A tekerés sikertelen</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Getting position failed</source>
+ <translation>A pozíció lekérése sikertelen</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Opening clip failed</source>
+ <translation>A klip megnyitása sikertelen</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::AudioEqualizer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/audioequalizer.cpp" line="+92"/>
+ <source>%1 Hz</source>
+ <translation>%1 Hz</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::AudioPlayer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/audioplayer.cpp" line="+173"/>
+ <source>Getting position failed</source>
+ <translation>A pozíció megállapítása sikertelen</translation>
+ </message>
+ <message>
+ <source>Opening clip failed</source>
+ <translation type="obsolete">A klip megnyitása sikertelen</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::DsaVideoPlayer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/videoplayer_dsa.cpp" line="+238"/>
+ <location line="+15"/>
+ <location line="+8"/>
+ <location line="+22"/>
+ <location line="+22"/>
+ <source>Video display error</source>
+ <translation>Videó megjelenítési hiba</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::EffectFactory</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/effectfactory.cpp" line="+181"/>
+ <source>Enabled</source>
+ <translation>Engedélyezve</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::EnvironmentalReverb</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/environmentalreverb.cpp" line="+146"/>
+ <source>Decay HF ratio (%)</source>
+ <extracomment>DecayHFRatio: Ratio of high-frequency decay time to the value specified by DecayTime.</extracomment>
+ <translation>NF lecsengés arány (%)</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Decay time (ms)</source>
+ <extracomment>DecayTime: Time over which reverberation is diminished.</extracomment>
+ <translation>NF lecsengés idő (ms)</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Density (%)</source>
+ <extracomment>Density Delay between first and subsequent reflections. Note that the S60 platform documentation does not make clear the distinction between this value and the Diffusion value.</extracomment>
+ <translation>Visszaverődési sűrűség (%)</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Diffusion (%)</source>
+ <extracomment>Diffusion: Delay between first and subsequent reflections. Note that the S60 platform documentation does not make clear the distinction between this value and the Density value.</extracomment>
+ <translation>Visszaverődési diffúzió (%)</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Reflections delay (ms)</source>
+ <extracomment>ReflectionsDelay: Amount of delay between the arrival the direct path from the source and the arrival of the first reflection.</extracomment>
+ <translation>Visszaverődés késleltetése (ms)</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Reflections level (mB)</source>
+ <extracomment>ReflectionsLevel: Amplitude of reflections. This value is corrected by the RoomLevel to give the final reflection amplitude.</extracomment>
+ <translation>Visszaverődés szintje (mB)</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Reverb delay (ms)</source>
+ <extracomment>ReverbDelay: Amount of time between arrival of the first reflection and start of the late reverberation.</extracomment>
+ <translation>Visszhang késleltetés (ms)</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Reverb level (mB)</source>
+ <extracomment>ReverbLevel Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude.</extracomment>
+ <translation>Visszhang szint (mB)</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Room HF level</source>
+ <extracomment>RoomHFLevel: Amplitude of low-pass filter used to attenuate the high frequency component of reflected sound.</extracomment>
+ <translation>Szoba NF elnyelés szint</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Room level (mB)</source>
+ <extracomment>RoomLevel: Master volume control for all reflected sound.</extracomment>
+ <translation>Szoba szint (mB)</translation>
</message>
</context>
<context>
<name>Phonon::MMF::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/mmf/mediaobject.cpp" line="+291"/>
- <source>Media type could not be determined</source>
- <translation>Nem lehetet meghatározni a média típust</translation>
+ <location filename="../src/3rdparty/phonon/mmf/mediaobject.cpp" line="+276"/>
+ <source>Error opening source: type not supported</source>
+ <translation>Hiba a forrás megnyitásakor: a típus nem támogatott</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Error opening source: media type could not be determined</source>
+ <translation>Hiba a forrás megnyitásakor: a média típusa nem állapítható meg</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::StereoWidening</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/stereowidening.cpp" line="+79"/>
+ <source>Level (%)</source>
+ <translation>Szint (%)</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::SurfaceVideoPlayer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/videoplayer_surface.cpp" line="+126"/>
+ <location line="+16"/>
+ <source>Video display error</source>
+ <translation>Videó megjelenítési hiba</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::VideoPlayer</name>
+ <message>
+ <source>Pause failed</source>
+ <translation type="obsolete">A megállítás sikertelen</translation>
+ </message>
+ <message>
+ <source>Seek failed</source>
+ <translation type="obsolete">A tekerés sikertelen</translation>
+ </message>
+ <message>
+ <source>Getting position failed</source>
+ <translation type="obsolete">A pozíció megállapłtása sikertelen</translation>
+ </message>
+ <message>
+ <source>Opening clip failed</source>
+ <translation type="obsolete">A klip megnyitása sikertelen</translation>
+ </message>
+ <message>
+ <source>Buffering clip failed</source>
+ <translation type="obsolete">A klip pufferelése sikertelen</translation>
+ </message>
+ <message>
+ <source>Video display error</source>
+ <translation type="obsolete">Videó megjelenítési hiba</translation>
</message>
</context>
<context>
@@ -223,12 +625,12 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<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>Használja ezt a csúszkát a hangerő szabályozásához. A legbaloldalib pozíció: 0%, a legjobboldalibb %1%</translation>
+ <translation>A csúszka segítségével állíthatja be a hangerőt. A bal szélső pozíció 0%-ot, a jobb szélső %1%-ot jelent</translation>
</message>
<message>
<location line="+67"/>
<source>Muted</source>
- <translation>Elnémított</translation>
+ <translation>Elnémítva</translation>
</message>
</context>
<context>
@@ -241,7 +643,7 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+36"/>
<source>Ambiguous %1 not handled</source>
- <translation>Félreérthető %1 nincs lekezelve</translation>
+ <translation>A nem egyértelmű %1 nem lesz kezelve</translation>
</message>
</context>
<context>
@@ -275,9 +677,9 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+829"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+835"/>
<source>Copy or Move a File</source>
- <translation>Egy fájl másolása vagy mozgatása</translation>
+ <translation>Fájl másolása vagy áthelyezése</translation>
</message>
<message>
<location line="+8"/>
@@ -294,15 +696,15 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<location line="-22"/>
<location line="+1579"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
<location line="-157"/>
<location line="+49"/>
<location line="+2149"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+112"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+133"/>
<source>All Files (*)</source>
- <translation>Az összes fájl (*)</translation>
+ <translation>Minden fájl (*)</translation>
</message>
<message>
<location line="-2085"/>
@@ -338,19 +740,19 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="-1987"/>
<source>Look &amp;in:</source>
- <translation>&amp;Benéz:</translation>
+ <translation>Keresés &amp;itt:</translation>
</message>
<message>
<location line="+1"/>
<location line="+1977"/>
<location line="+16"/>
<source>File &amp;name:</source>
- <translation>Fájl &amp;név:</translation>
+ <translation>Fájl &amp;neve:</translation>
</message>
<message>
<location line="-1992"/>
<source>File &amp;type:</source>
- <translation>Fájl &amp;típus:</translation>
+ <translation>Fájl &amp;típusa:</translation>
</message>
<message>
<location line="+7"/>
@@ -360,12 +762,12 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+7"/>
<source>One directory up</source>
- <translation>Egy könyvtárral kintebb</translation>
+ <translation>Egy szinttel feljebb</translation>
</message>
<message>
<location line="+9"/>
<source>Create New Folder</source>
- <translation>Új mappa létrehozása</translation>
+ <translation>Új könyvtár létrehozása</translation>
</message>
<message>
<location line="+18"/>
@@ -380,17 +782,17 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+9"/>
<source>Preview File Info</source>
- <translation>Fájl információ előnézet</translation>
+ <translation>Fájlinformációk előnézete</translation>
</message>
<message>
<location line="+19"/>
<source>Preview File Contents</source>
- <translation>Fájl tartalom előnézet</translation>
+ <translation>Fájltartalom előnézete</translation>
</message>
<message>
<location line="+88"/>
<source>Read-write</source>
- <translation>Írás olvasás</translation>
+ <translation>Írható-olvasható</translation>
</message>
<message>
<location line="+1"/>
@@ -405,22 +807,22 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+1"/>
<source>Inaccessible</source>
- <translation>Hozzáférhetetlen</translation>
+ <translation>Nem elérhető</translation>
</message>
<message>
<location line="+2"/>
<source>Symlink to File</source>
- <translation>Szimlink a fájlra</translation>
+ <translation>Szimbolikus link a fájlra</translation>
</message>
<message>
<location line="+1"/>
<source>Symlink to Directory</source>
- <translation>Szimlink a könyvtárra</translation>
+ <translation>Szimbolikus link a könyvtárra</translation>
</message>
<message>
<location line="+1"/>
<source>Symlink to Special</source>
- <translation>Szimlink egy speciálisra</translation>
+ <translation>Szimbolikus link a speciális fájlra</translation>
</message>
<message>
<location line="+1"/>
@@ -435,7 +837,7 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+1"/>
<source>Special</source>
- <translation>Speciális</translation>
+ <translation>Speciális fájl</translation>
</message>
<message>
<location line="+704"/>
@@ -461,12 +863,12 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<location line="-357"/>
<location line="+341"/>
<source>&amp;Save</source>
- <translation>&amp;Mentés</translation>
+ <translation>Menté&amp;s</translation>
</message>
<message>
<location line="-334"/>
<source>&amp;Rename</source>
- <translation>&amp;Átnevezés</translation>
+ <translation>Át&amp;nevezés</translation>
</message>
<message>
<location line="+1"/>
@@ -476,27 +878,27 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+20"/>
<source>R&amp;eload</source>
- <translation>&amp;Újratöltés</translation>
+ <translation>B&amp;etöltés újra</translation>
</message>
<message>
<location line="+4"/>
<source>Sort by &amp;Name</source>
- <translation>Rendezés &amp;Név alapján</translation>
+ <translation>Rendezés &amp;név szerint</translation>
</message>
<message>
<location line="+2"/>
<source>Sort by &amp;Size</source>
- <translation>Rendezés &amp;Méret alapján</translation>
+ <translation>Rendezés &amp;méret szerint</translation>
</message>
<message>
<location line="+1"/>
<source>Sort by &amp;Date</source>
- <translation>Rendezés &amp;Dátum alapján</translation>
+ <translation>Rendezés &amp;dátum szerint</translation>
</message>
<message>
<location line="+2"/>
<source>&amp;Unsorted</source>
- <translation>&amp;Rendezetlen</translation>
+ <translation>Nin&amp;cs rendezés</translation>
</message>
<message>
<location line="+15"/>
@@ -521,7 +923,7 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+2"/>
<source>the symlink</source>
- <translation>a szimlink</translation>
+ <translation>a szimbolikus link</translation>
</message>
<message>
<location line="+3"/>
@@ -531,7 +933,7 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<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;Biztos benne, hogy törölni kívánja a(z) %1 &quot;%2&quot;?&lt;/qt&gt;</translation>
+ <translation>&lt;qt&gt;Biztosan törölni akarja ezt: %1 &quot;%2&quot;?&lt;/qt&gt;</translation>
</message>
<message>
<location line="+2"/>
@@ -546,22 +948,22 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
<message>
<location line="+36"/>
<source>New Folder 1</source>
- <translation>Új mappa 1</translation>
+ <translation>Új könyvtár 1</translation>
</message>
<message>
<location line="+5"/>
<source>New Folder</source>
- <translation>Új mappa</translation>
+ <translation>Új könyvtár</translation>
</message>
<message>
<location line="+5"/>
<source>New Folder %1</source>
- <translation>Új mappa %1</translation>
+ <translation>Új könyvtár %1</translation>
</message>
<message>
<location line="+98"/>
<source>Find Directory</source>
- <translation>Könyvtár keresése</translation>
+ <translation>Keresés a könyvtárban</translation>
</message>
<message>
<location line="+5"/>
@@ -586,23 +988,23 @@ Ellenőrizze le a GStreamer telepítését és győzödjön meg róla, hogy inst
File not found.
Check path and filename.</source>
<translation>%1
-Fájl nem található
-Útvonal és fájlnév ellenőrzése.</translation>
+A fájl nem található.
+Ellenőrizze a fájl nevét és elérési útját.</translation>
</message>
<message>
<location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="-191"/>
<source>All Files (*.*)</source>
- <translation>Az összes fájl (*.*)</translation>
+ <translation>Minden fájl (*.*)</translation>
</message>
<message>
<location line="+264"/>
<source>Open </source>
- <translation>Megnyitás</translation>
+ <translation>Megnyitás </translation>
</message>
<message>
<location line="+107"/>
<source>Select a Directory</source>
- <translation>Egy könyvtár kiválasztása</translation>
+ <translation>Könyvtár kiválasztása</translation>
</message>
</context>
<context>
@@ -612,21 +1014,21 @@ Fájl nem található
<location line="+10"/>
<source>Could not read directory
%1</source>
- <translation>Nem sikerült a könytárat olvasni
+ <translation>A könyvtár nem olvasható:
%1</translation>
</message>
<message>
<location line="+45"/>
<source>Could not create directory
%1</source>
- <translation>Nem sikerült létrehozni a könyvtárat
+ <translation>A könyvtár nem hozható létre:
%1</translation>
</message>
<message>
<location line="+34"/>
<source>Could not remove file or directory
%1</source>
- <translation>Nem sikerült eltávolítani egy fájlt vag könyvtárat
+ <translation>A fájl vagy könyvtár nem törölhető:
%1</translation>
</message>
<message>
@@ -635,23 +1037,23 @@ Fájl nem található
%1
to
%2</source>
- <translation>Nem sikerült átnevezni ezt
+ <translation>Nem nevezhető át
%1
-erre
+erre:
%2</translation>
</message>
<message>
<location line="+25"/>
<source>Could not open
%1</source>
- <translation>Nem sikerült megnyitni
+ <translation>Nem nyitható meg:
%1</translation>
</message>
<message>
<location line="+68"/>
<source>Could not write
%1</source>
- <translation>Nem sikerült írni
+ <translation>Nem írható:
%1</translation>
</message>
</context>
@@ -660,12 +1062,12 @@ erre
<message>
<location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
- <translation>Egy sorral feljebb</translation>
+ <translation>Igazítás</translation>
</message>
<message>
<location line="+2"/>
<source>Customize...</source>
- <translation>Egyéni...</translation>
+ <translation>Testreszabás...</translation>
</message>
</context>
<context>
@@ -673,7 +1075,7 @@ erre
<message>
<location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
- <translation>A felhasználó leállította a műveletet</translation>
+ <translation>A műveletet a felhasználó megszakította</translation>
</message>
</context>
<context>
@@ -682,7 +1084,7 @@ erre
<location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
</context>
<context>
@@ -696,7 +1098,7 @@ erre
<message>
<location line="-366"/>
<source>Apply</source>
- <translation>Alkalmazza</translation>
+ <translation>Alkalmaz</translation>
</message>
<message>
<location line="+43"/>
@@ -706,12 +1108,12 @@ erre
<message>
<location line="+45"/>
<source>Defaults</source>
- <translation>Alapértelemett</translation>
+ <translation>Alapértelmezések</translation>
</message>
<message>
<location line="+50"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
</context>
<context>
@@ -724,7 +1126,7 @@ erre
<message>
<location line="+1"/>
<source>&amp;Redo</source>
- <translation>&amp;Helyreállítás</translation>
+ <translation>Új&amp;ra</translation>
</message>
<message>
<location line="+5"/>
@@ -744,13 +1146,13 @@ erre
<message>
<location line="+3"/>
<source>Clear</source>
- <translation>Kiürítés</translation>
+ <translation>Törlés</translation>
</message>
<message>
<location line="+4"/>
<location line="+2"/>
<source>Select All</source>
- <translation>Az összes kiválasztása</translation>
+ <translation>Összes kijelölése</translation>
</message>
</context>
<context>
@@ -763,7 +1165,7 @@ erre
<message>
<location line="+3"/>
<source>Restore up</source>
- <translation>Felállítás</translation>
+ <translation>Visszaállítás</translation>
</message>
<message>
<location line="+1"/>
@@ -773,12 +1175,12 @@ erre
<message>
<location line="+3"/>
<source>Restore down</source>
- <translation>Leállítás</translation>
+ <translation>Előző méret</translation>
</message>
<message>
<location line="+1"/>
<source>Maximize</source>
- <translation>Maximalizálás</translation>
+ <translation>Teljes méret</translation>
</message>
<message>
<location line="+2"/>
@@ -788,37 +1190,41 @@ erre
<message>
<location line="+18"/>
<source>Contains commands to manipulate the window</source>
- <translation>Tartalmazza az ablak manipulációs parancsokat</translation>
+ <translation>Parancsokat tartalmaz az ablak kezeléséhez</translation>
</message>
<message>
<location line="+3"/>
<source>Puts a minimized window back to normal</source>
- <translation>Egy minimalizált ablak normálra visszatétele</translation>
+ <translation>Helyreállítja a kis méretre tett ablakot</translation>
+ </message>
+ <message>
+ <source>Puts a minimized back to normal</source>
+ <translation type="obsolete">A kis méretű ablakot normál méretűre állítja vissza</translation>
</message>
<message>
<location line="+1"/>
<source>Moves the window out of the way</source>
- <translation>Az ablak félreeső helyre mozgatása</translation>
+ <translation>Elmozgatja az ablakot az útból</translation>
</message>
<message>
<location line="+3"/>
<source>Puts a maximized window back to normal</source>
- <translation>Maximalizált ablak normálra visszatétele</translation>
+ <translation>A teljes méretű ablakot normál méretűre állítja vissza</translation>
</message>
<message>
<location line="+1"/>
<source>Makes the window full screen</source>
- <translation>Az ablak maximális méretűvé tétele</translation>
+ <translation>Az ablakot teljes képernyő méretűre növeli</translation>
</message>
<message>
<location line="+2"/>
<source>Closes the window</source>
- <translation>Az ablak bezárása</translation>
+ <translation>Bezárja az ablakot</translation>
</message>
<message>
<location line="+2"/>
<source>Displays the name of the window and contains controls to manipulate it</source>
- <translation>Az ablak nevének megjelenítése és manipuláláshoz szükséges vezérlő elemek tartalmazása</translation>
+ <translation>Megjeleníti az ablak nevét, és kezelőket a megváltoztatásukhoz</translation>
</message>
</context>
<context>
@@ -826,7 +1232,7 @@ erre
<message>
<location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
- <translation>További...</translation>
+ <translation>Továbbiak...</translation>
</message>
</context>
<context>
@@ -836,43 +1242,43 @@ erre
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
- <translation>A(z) &apos;%1&apos; protokoll nem támogatott</translation>
+ <translation>A(z) `%1&apos; protokoll nem támogatott</translation>
</message>
<message>
<location line="-260"/>
<source>The protocol `%1&apos; does not support listing directories</source>
- <translation>A(z) &apos;%1&apos; protokoll nem támogatja a könyvtár listázást</translation>
+ <translation>A(z) `%1&apos; protokoll nem támogatja a könyvtárak tartalmának listázását</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support creating new directories</source>
- <translation>A(z) &apos;%1&apos; protokoll nem támogatja az új könyvtárak létrehozását</translation>
+ <translation>A(z) `%1&apos; protokoll nem támogatja könyvtárak létrehozását</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support removing files or directories</source>
- <translation>A(z) &apos;%1&apos; protokoll nem támogatja fájlok vagy könyvtárat áthelyezését</translation>
+ <translation>A(z) &apos;%1&apos; protokoll nem támogatja a fájlok vagy könyvtárak törlését</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support renaming files or directories</source>
- <translation>A(z) &apos;%1&apos; protokoll nem támogatja fájlok vagy könyvtárat átnevezését</translation>
+ <translation>A(z) &apos;%1&apos; protokoll nem támogatja a fájlok vagy könyvtárak átnevezését</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support getting files</source>
- <translation>A(z) &apos;%1&apos; protokoll nem támogatja fájlok szerzését</translation>
+ <translation>A(z) &apos;%1&apos; protokoll nem támogatja a fájlok letöltését</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support putting files</source>
- <translation>A(z) &apos;%1&apos; protokoll nem támogatja fájlok betevését</translation>
+ <translation>A(z) &apos;%1&apos; protokoll nem támogatja a fájlok feltöltését</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>A(z) &apos;%1&apos; protokoll nem támogatja fájlok vagy könyvtárak mozgatását vagy másolását</translation>
+ <translation>A(z) &apos;%1&apos; protokoll nem támogatja a fájlok vagy könyvtárak másolását vagy áthelyezését</translation>
</message>
<message>
<location line="+237"/>
@@ -886,7 +1292,7 @@ erre
<message>
<location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
- <translation>&amp;Mégse</translation>
+ <translation>&amp;Mégsem</translation>
</message>
<message>
<location line="+1"/>
@@ -912,64 +1318,65 @@ erre
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+899"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+643"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+549"/>
+ <location line="+809"/>
+ <location line="+220"/>
+ <source>Operation on socket is not supported</source>
+ <translation>A művelet nem támogatott socketeken</translation>
+ </message>
+ <message>
+ <location line="-662"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+629"/>
<location filename="../src/network/socket/qsocks5socketengine.cpp" line="+661"/>
<location line="+26"/>
<source>Host not found</source>
- <translation>A hoszt nem található</translation>
+ <translation>A kiszolgáló nem található</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>A kapcsolódás elutasítva</translation>
+ <translation>A kapcsolat elutasítva</translation>
</message>
<message>
<location line="+142"/>
<source>Connection timed out</source>
- <translation>Kapcsolódási időtúllépés</translation>
+ <translation>A kapcsolat várakozási ideje lejárt</translation>
</message>
<message>
- <location line="-555"/>
- <location line="+805"/>
- <location line="+208"/>
- <source>Operation on socket is not supported</source>
- <translation>A socket művelet nem támogatott</translation>
- </message>
- <message>
- <location line="+200"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+625"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+673"/>
<source>Socket operation timed out</source>
<translation>Socket művelet időtúllépés</translation>
</message>
<message>
- <location line="+380"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+380"/>
<source>Socket is not connected</source>
- <translation>Socket nincs csatlakoztatva</translation>
+ <translation>A socket nem kapcsolódott</translation>
</message>
<message>
<location filename="../src/network/socket/qsocks5socketengine.cpp" line="-8"/>
<source>Network unreachable</source>
- <translation>A hálózat nem elérhető</translation>
+ <translation>A hálózat nem érhető el</translation>
</message>
</context>
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1217"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1263"/>
<source>&amp;Step up</source>
- <translation>&amp;Növelés</translation>
+ <translation>Lépés &amp;felfelé</translation>
</message>
<message>
<location line="+2"/>
<source>Step &amp;down</source>
- <translation>&amp;Csökkentés</translation>
+ <translation>Lépés &amp;lefelé</translation>
</message>
<message>
<location line="-8"/>
<source>&amp;Select All</source>
- <translation>Az összes &amp;kiválasztása</translation>
+ <translation>Ö&amp;sszes kijelölése</translation>
</message>
</context>
<context>
@@ -977,36 +1384,75 @@ erre
<message>
<location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+250"/>
<source>Press</source>
- <translation>Megnyomás</translation>
+ <translation>Nyomja meg</translation>
+ </message>
+</context>
+<context>
+ <name>QAction</name>
+ <message>
+ <source>Options</source>
+ <translation type="obsolete">Opciók</translation>
+ </message>
+ <message>
+ <source>Select</source>
+ <translation type="obsolete">Kiválasztás</translation>
+ </message>
+ <message>
+ <source>Back</source>
+ <translation type="obsolete">Vissza</translation>
+ </message>
+ <message>
+ <source>Next</source>
+ <translation type="obsolete">Előre</translation>
+ </message>
+ <message>
+ <source>Previous</source>
+ <translation type="obsolete">Előző</translation>
+ </message>
+ <message>
+ <source>Ok</source>
+ <translation type="obsolete">Ok</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="obsolete">Mégsem</translation>
+ </message>
+ <message>
+ <source>Edit</source>
+ <translation type="obsolete">Szerkesztés</translation>
+ </message>
+ <message>
+ <source>View</source>
+ <translation type="obsolete">Nézet</translation>
</message>
</context>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2279"/>
- <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>QT_LAYOUT_DIRECTION</translation>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
+ <source>Activate</source>
+ <translation>Aktiválás</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qmessagebox.h" line="+354"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
- <translation>A(z) &apos;%1&apos; futtatható fájl igényli a Qt %2, de Qt %3.-t talált.</translation>
+ <translation>&apos;%1&apos; program Qt %2-t igényel (Qt %3 van telepítve).</translation>
</message>
<message>
<location line="+2"/>
<source>Incompatible Qt Library Error</source>
- <translation>Inkompatibilis Qt könyvtár hiba</translation>
+ <translation>Hiba: inkompatíbilis Qt függvénykönyvtár</translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
- <source>Activate</source>
- <translation>Aktiválás</translation>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="-13"/>
+ <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 line="+2"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+2"/>
<source>Activates the program&apos;s main window</source>
- <translation>A program fő ablakának aktiválása</translation>
+ <translation>Aktívvá teszi a program főablakát</translation>
</message>
</context>
<context>
@@ -1024,12 +1470,12 @@ erre
<message>
<location/>
<source>&amp;Cancel</source>
- <translation>&amp;Mégse</translation>
+ <translation>&amp;Mégsem</translation>
</message>
<message>
<location/>
<source>COM &amp;Object:</source>
- <translation>COM &amp;Objektum:</translation>
+ <translation>COM &amp;objektum:</translation>
</message>
</context>
<context>
@@ -1037,40 +1483,40 @@ erre
<message>
<location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-136"/>
<source>Uncheck</source>
- <translation>Nincs bejelölve</translation>
+ <translation>Kijelölés megszüntetése</translation>
</message>
<message>
<location line="+3"/>
<source>Check</source>
- <translation>Bejelölve</translation>
+ <translation>Kijelölés</translation>
</message>
<message>
<location line="+1"/>
<source>Toggle</source>
- <translation>Kapcsolgatás</translation>
+ <translation>Váltás</translation>
</message>
</context>
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1349"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1378"/>
<source>Hu&amp;e:</source>
- <translation>&amp;Színárnyalat:</translation>
+ <translation>Á&amp;rnyalat:</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Sat:</source>
- <translation>&amp;Sat:</translation>
+ <translation>&amp;Telítettség:</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Val:</source>
- <translation>&amp;Érték:</translation>
+ <translation>&amp;Fényerő:</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Red:</source>
- <translation>&amp;Piros:</translation>
+ <translation>&amp;Vörös:</translation>
</message>
<message>
<location line="+1"/>
@@ -1090,28 +1536,44 @@ erre
<message>
<location line="+101"/>
<source>Select Color</source>
- <translation>Szín kiválasztása</translation>
+ <translation>Szín választás</translation>
</message>
<message>
- <location line="+180"/>
+ <location line="+183"/>
<source>&amp;Basic colors</source>
- <translation>&amp;Alap színek</translation>
+ <translation>Ala&amp;p színek</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Custom colors</source>
- <translation>&amp;Egyéni színek</translation>
+ <translation>&amp;Saját színek</translation>
+ </message>
+ <message>
+ <source>&amp;Define Custom Colors &gt;&gt;</source>
+ <translation type="obsolete">Saját színek &amp;megadása &gt;&gt;</translation>
+ </message>
+ <message>
+ <source>OK</source>
+ <translation type="obsolete">OK</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="obsolete">Mégsem</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Add to Custom Colors</source>
- <translation>&amp;Egyéni színek hozzáadása</translation>
+ <translation>Hozzá&amp;adás a saját színekhez</translation>
+ </message>
+ <message>
+ <source>Select color</source>
+ <translation type="obsolete">Szín kiválasztása</translation>
</message>
</context>
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1772"/>
<location line="+65"/>
<source>Open</source>
<translation>Megnyitás</translation>
@@ -1135,22 +1597,9 @@ erre
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
- <source>%1: key is empty</source>
- <comment>QSystemSemaphore</comment>
- <translation>%1:kulcs üres</translation>
- </message>
- <message>
- <location line="+12"/>
- <source>%1: unable to make key</source>
- <comment>QSystemSemaphore</comment>
- <translation>%1: nem lehet kulcsot csinálni</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>%1: ftok failed</source>
+ <source>%1: permission denied</source>
<comment>QSystemSemaphore</comment>
- <translation>%1: ftok hiba</translation>
+ <translation type="obsolete">%1: hozzáférés megtagadva</translation>
</message>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_symbian.cpp" line="+65"/>
@@ -1159,16 +1608,21 @@ erre
<translation>%1: már létezik</translation>
</message>
<message>
+ <source>%1: doesn&apos;t exists</source>
+ <comment>QSystemSemaphore</comment>
+ <translation type="obsolete">%1: nem található</translation>
+ </message>
+ <message>
<location line="+4"/>
<source>%1: does not exist</source>
<comment>QSystemSemaphore</comment>
- <translation>%1: nem létezik</translation>
+ <translation>%1: még nem létezik</translation>
</message>
<message>
<location line="+5"/>
<source>%1: out of resources</source>
<comment>QSystemSemaphore</comment>
- <translation>%1: elfogytak az erőforrások</translation>
+ <translation>%1: az erőforrások elfogytak</translation>
</message>
<message>
<location line="+4"/>
@@ -1176,62 +1630,80 @@ erre
<comment>QSystemSemaphore</comment>
<translation>%1: ismeretlen hiba %2</translation>
</message>
+ <message>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
+ <source>%1: key is empty</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: a kulcs hiányzik</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1: unable to make key</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: a kulcs elkészítése sikertelen</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1: ftok failed</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: ftok hibát adott vissza</translation>
+ </message>
</context>
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1254"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1253"/>
<source>Unable to connect</source>
- <translation>Nem lehet csatlakozni</translation>
+ <translation>Nem sikerült kapcsolódni</translation>
</message>
<message>
<location line="+298"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+17"/>
<source>Unable to rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
</message>
<message>
<location line="+15"/>
<source>Unable to set autocommit</source>
- <translation>Nem lehet beállítani az automatikus kommitolást</translation>
+ <translation>Az automatikus véglegesítés nem állítható be</translation>
</message>
</context>
<context>
<name>QDB2Result</name>
<message>
- <location line="-1031"/>
+ <location line="-1030"/>
<location line="+240"/>
<source>Unable to execute statement</source>
- <translation>Nem lehet végrehajtani a műveletet</translation>
+ <translation>A művelet nem hajtható végre</translation>
</message>
<message>
<location line="-203"/>
<source>Unable to prepare statement</source>
- <translation>Nem lehet felkészülni a műveletre</translation>
+ <translation>A művelet előkészítése nem lehetséges</translation>
</message>
<message>
<location line="+193"/>
<source>Unable to bind variable</source>
- <translation>Nem lehet összekötni a változót</translation>
+ <translation>A változó nem rögzíthető</translation>
</message>
<message>
<location line="+89"/>
<source>Unable to fetch record %1</source>
- <translation>Nem lehet letölteni a(z) %1 felvételt</translation>
+ <translation>A(z) %1. rekord nem olvasható ki</translation>
</message>
<message>
<location line="+19"/>
<source>Unable to fetch next</source>
- <translation>Nem lehet letölteni a következőt</translation>
+ <translation>A következő rekord nem olvasható ki</translation>
</message>
<message>
<location line="+21"/>
<source>Unable to fetch first</source>
- <translation>Nem lehet letölteni az elsőt</translation>
+ <translation>Az első rekord nem érhető el</translation>
</message>
</context>
<context>
@@ -1239,22 +1711,1196 @@ erre
<message>
<location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2287"/>
<source>AM</source>
- <translation>AM</translation>
+ <translation>DE</translation>
</message>
<message>
<location line="+0"/>
<source>am</source>
- <translation>am</translation>
+ <translation>de</translation>
</message>
<message>
<location line="+2"/>
<source>PM</source>
- <translation>PM</translation>
+ <translation>DU</translation>
</message>
<message>
<location line="+0"/>
<source>pm</source>
- <translation>pm</translation>
+ <translation>du</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeAbstractAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+166"/>
+ <source>Cannot animate non-existent property &quot;%1&quot;</source>
+ <translation>Nem lehet animálni a hiányzó &quot;%1&quot; tulajdonság nélkül</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot animate read-only property &quot;%1&quot;</source>
+ <translation>Nem lehet animálni a csak olvasható &quot;%1&quot; tulajdonsággal</translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeutilmodule.cpp" line="+122"/>
+ <source>Animation is an abstract class</source>
+ <translation>Az Animation absztrakt osztály</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeAnchorAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+2553"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeAnchors</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeanchors.cpp" line="+180"/>
+ <source>Possible anchor loop detected on fill.</source>
+ <translation>Lehetséges horgony hurok észlelhető egy festésen.</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Possible anchor loop detected on centerIn.</source>
+ <translation>Lehetséges horgony hurok észlelhető a középvonalon.</translation>
+ </message>
+ <message>
+ <location line="+201"/>
+ <location line="+34"/>
+ <location line="+610"/>
+ <location line="+37"/>
+ <source>Cannot anchor to an item that isn&apos;t a parent or sibling.</source>
+ <translation>Nem lehet egy olyan elemhez horgonyozni, mely nem szülő vagy gyermek.</translation>
+ </message>
+ <message>
+ <location line="-534"/>
+ <source>Possible anchor loop detected on vertical anchor.</source>
+ <translation>Lehetséges horgony hurok észlelhető egy függőleges horgonyon.</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Possible anchor loop detected on horizontal anchor.</source>
+ <translation>Lehetséges horgony hurok észlelhető egy vízszintes horgonyon.</translation>
+ </message>
+ <message>
+ <location line="+422"/>
+ <source>Cannot specify left, right, and hcenter anchors.</source>
+ <translation>Nem lehet egyszerre bal, jobb, és vízszintes közép horgonyokat megadni.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+37"/>
+ <source>Cannot anchor to a null item.</source>
+ <translation>Nem lehet egy null elemhez horgonyozni.</translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <source>Cannot anchor a horizontal edge to a vertical edge.</source>
+ <translation>Nem lehet a vízszintes vagy a függőleges szélekhez horgonyozni.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+37"/>
+ <source>Cannot anchor item to self.</source>
+ <translation>Nem lehet egy elemet önmagához horgonyozni.</translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <source>Cannot specify top, bottom, and vcenter anchors.</source>
+ <translation>Nem lehet egyszerre felső, alsó, és függőleges közép horgonyokat megadni.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Baseline anchor cannot be used in conjunction with top, bottom, or vcenter anchors.</source>
+ <translation>Alapvonali horgonyt nem lehet összekapcsolni felső, alsó, vagy függőleges közép horgonyokkal.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot anchor a vertical edge to a horizontal edge.</source>
+ <translation>Nem lehet a vízszintes szélt a függőlegeshez horgonyozni.</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeAnimatedImage</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp" line="+86"/>
+ <source>Qt was built without support for QMovie</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeBehavior</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativebehavior.cpp" line="+127"/>
+ <source>Cannot change the animation assigned to a Behavior.</source>
+ <translation>Nem lehet egy Behavior elemhez rendelt animációt módosítani.</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeBinding</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativebinding.cpp" line="+238"/>
+ <source>Binding loop detected for property &quot;%1&quot;</source>
+ <translation>Kötési hurok észlelhető a(z) &quot;%1&quot; tulajdonságon</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeCompiledBindings</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecompiledbindings.cpp" line="+372"/>
+ <source>Binding loop detected for property &quot;%1&quot;</source>
+ <translation type="unfinished">Kötési hurok észlelhető a(z) &quot;%1&quot; tulajdonságon</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeCompiler</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecompiler.cpp" line="+186"/>
+ <location line="+1596"/>
+ <location line="+186"/>
+ <location line="+81"/>
+ <location line="+75"/>
+ <location line="+487"/>
+ <source>Invalid property assignment: &quot;%1&quot; is a read-only property</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: &quot;%1&quot; egy csak olvasható tulajdonság</translation>
+ </message>
+ <message>
+ <location line="-2416"/>
+ <source>Invalid property assignment: unknown enumeration</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: ismeretlen felsorolás</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: string expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: szöveges érték szükséges</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: url expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: URL szükséges</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Invalid property assignment: unsigned int expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: előjel nélküli egész érték szükséges</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Invalid property assignment: int expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: egész érték szükséges</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Invalid property assignment: float expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: lebegőpontos érték szükséges</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: double expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: duplapontos érték szükséges</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Invalid property assignment: color expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: szín szükséges</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: date expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: dátum szükséges</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: time expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: idő szükséges</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: datetime expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: datetime érték szükséges</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid property assignment: point expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: pont szükséges</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: size expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: méret szükséges</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: rect expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: téglalap szükséges</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Invalid property assignment: boolean expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: boolean érték szükséges</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: 3D vector expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: 3D vektor szükséges</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid property assignment: unsupported type &quot;%1&quot;</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: nem támogatott típus: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+277"/>
+ <source>Element is not creatable.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+618"/>
+ <source>Component elements may not contain properties other than id</source>
+ <translation>A Component elemek nem tartalmazhatnak az id-n kívűl más tulajdonságot</translation>
+ </message>
+ <message>
+ <source>Component elements may not contain script blocks</source>
+ <translation type="obsolete">A Component elemek nem tartalmazhatnak parancsblokkokat</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid component id specification</source>
+ <translation>Érvénytelen komponens azonosító megadás</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+478"/>
+ <source>id is not unique</source>
+ <translation>Az azonosító nem egyedi</translation>
+ </message>
+ <message>
+ <location line="-468"/>
+ <source>Invalid component body specification</source>
+ <translation>Érvénytelen komponens-törzs megadás</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Component objects cannot declare new properties.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Component objects cannot declare new signals.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Component objects cannot declare new functions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Cannot create empty component specification</source>
+ <translation>Nem lehet üres komponenst megadni</translation>
+ </message>
+ <message>
+ <source>Invalid Script block. Specify either the source property or inline script</source>
+ <translation type="obsolete">Érvénytelen Script blokk. Adja meg a source tulajdonságot vagy ágyazzon be parancsokat</translation>
+ </message>
+ <message>
+ <source>Invalid Script source value</source>
+ <translation type="obsolete">Érvénytelen Script source érték</translation>
+ </message>
+ <message>
+ <source>Properties cannot be set on Script block</source>
+ <translation type="obsolete">A tulajdonságok nem módosíthatók Script blokkból</translation>
+ </message>
+ <message>
+ <source>Invalid Script block</source>
+ <translation type="obsolete">Érvénytelen Script blokk</translation>
+ </message>
+ <message>
+ <source>Incorrectly specified signal</source>
+ <translation type="obsolete">Hibásan megadott jelzés (signal)</translation>
+ </message>
+ <message>
+ <location line="+105"/>
+ <source>Empty signal assignment</source>
+ <translation>Üres jelzés (signal) hozzárendelés</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Empty property assignment</source>
+ <translation>Üres tulajdonság hozzárendelés</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Attached properties cannot be used here</source>
+ <translation>A csatolt tulajdonságok nem használhatók</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <location line="+102"/>
+ <source>Non-existent attached object</source>
+ <translation>Nem létező csatolt objektum</translation>
+ </message>
+ <message>
+ <location line="-98"/>
+ <location line="+101"/>
+ <source>Invalid attached object assignment</source>
+ <translation>Érvénytelen objektumcsatolás</translation>
+ </message>
+ <message>
+ <location line="-48"/>
+ <source>Cannot assign to non-existent default property</source>
+ <translation>Nem lehet hozzárendelni egy nem létező alapértelmezett tulajdonságot</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location line="+352"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation>Nem lehet hozzárendelni a nem létező &quot;%1&quot; tulajdonságot</translation>
+ </message>
+ <message>
+ <location line="-322"/>
+ <source>Invalid use of namespace</source>
+ <translation>Érvénytelen névtérhasználat</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Not an attached property name</source>
+ <translation>Ez nem egy csatolt tulajdonságnév</translation>
+ </message>
+ <message>
+ <location line="+182"/>
+ <source>Invalid use of id property</source>
+ <translation>Az id tulajdonság érvénytelen használata</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is not a valid object id</source>
+ <translation type="obsolete">&quot;%1&quot; nem érvényes objektumazonosító</translation>
+ </message>
+ <message>
+ <source>id conflicts with type name</source>
+ <translation type="obsolete">Az id ütközik a típus nevével</translation>
+ </message>
+ <message>
+ <source>id conflicts with namespace prefix</source>
+ <translation type="obsolete">Az id ütközik a névtér előtaggal</translation>
+ </message>
+ <message>
+ <source>Invalid value in grouped property</source>
+ <translation type="obsolete">Érvénytelen érték a csoportos tulajdonságon</translation>
+ </message>
+ <message>
+ <location line="-357"/>
+ <source>Incorrectly specified signal assignment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Cannot assign a value to a signal (expecting a script to be run)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+434"/>
+ <location line="+2"/>
+ <source>Property has already been assigned a value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location line="+7"/>
+ <source>Invalid grouped property access</source>
+ <translation>Érvénytelen csoportos tulajdonság-hozzáférés</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot assign a value directly to a grouped property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Invalid property use</source>
+ <translation>Tulajdonság érvénytelen használata</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Property assignment expected</source>
+ <translation>Tulajdonság hozzárendelés szükséges</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Single property assignment expected</source>
+ <translation>Egyetlen tulajdonság hozzárendelése szükséges</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Unexpected object assignment</source>
+ <translation>Váratlan objektum-hozzárendelés</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Cannot assign object to list</source>
+ <translation>Nem lehet objektumot listához rendelni</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Can only assign one binding to lists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Cannot assign primitives to lists</source>
+ <translation>Nem lehet primitiv típusokat listához rendelni</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot assign multiple values to a script property</source>
+ <translation>Nem lehet több értéket rendelni script tulajdonsághoz</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: script expected</source>
+ <translation>Érvénytelen tulajdonság-hozzárendelés: script szükséges</translation>
+ </message>
+ <message>
+ <location line="+105"/>
+ <source>Cannot assign object to property</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Nem lehet objektumot rendelni tulajdonsághoz</translation>
+ </message>
+ <message>
+ <location line="+50"/>
+ <source>&quot;%1&quot; cannot operate on &quot;%2&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+117"/>
+ <source>Duplicate default property</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Dupla alapértelmezett tulajdonság</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Duplicate property name</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Dupla tulajdonságnév</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Property names cannot begin with an upper case letter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Duplicate signal name</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Dupla jelzés név</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Signal names cannot begin with an upper case letter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Duplicate method name</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Dupla metódus név</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Method names cannot begin with an upper case letter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Property value set multiple times</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Invalid property nesting</source>
+ <translation>Érvénytelen tulajdonság illesztés</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Cannot override FINAL property</source>
+ <translation>Nem lehet FINAL tulajdonságot felülbírálni</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Invalid property type</source>
+ <translation>Érvénytelen tulajdonság típus</translation>
+ </message>
+ <message>
+ <location line="+159"/>
+ <source>Invalid empty ID</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>IDs cannot start with an uppercase letter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>IDs must start with a letter or underscore</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>IDs must contain only letters, numbers, and underscores</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>ID illegally masks global JavaScript property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <location line="+9"/>
+ <source>No property alias location</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <location line="+25"/>
+ <source>Invalid alias location</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-16"/>
+ <source>Invalid alias reference. An alias reference must be specified as &lt;id&gt; or &lt;id&gt;.&lt;property&gt;</source>
+ <translation>Érvénytelen álnév-referencia. Az álnév-referenciának &lt;id&gt; vagy &lt;id&gt;.&lt;property&gt; formátumúnak kell lennie</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid alias reference. Unable to find id &quot;%1&quot;</source>
+ <translation>Érvénytelen álnév-referencia. A(z) &quot;%1&quot; azonosító nem létezik</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeComponent</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecomponent.cpp" line="+459"/>
+ <source>Invalid empty URL</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeCompositeTypeManager</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecompositetypemanager.cpp" line="+475"/>
+ <location line="+266"/>
+ <source>Resource %1 unavailable</source>
+ <translation>A(z) %1 erőforrás nem érhető el</translation>
+ </message>
+ <message>
+ <location line="-120"/>
+ <source>%1 %2</source>
+ <translation type="unfinished">%1% {1 %2?}</translation>
+ </message>
+ <message>
+ <source>Import %1 unavailable</source>
+ <translation type="obsolete">A(z) %1 import nem érhető el</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Namespace %1 cannot be used as a type</source>
+ <translation>A(z) %1 névtér nem használható típusként</translation>
+ </message>
+ <message>
+ <source>%1 is not a type</source>
+ <translation type="obsolete">%1 nem típus</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>Type %1 unavailable</source>
+ <translation>A(z) %1 típus nem érhető el</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeConnections</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeconnections.cpp" line="+209"/>
+ <location line="+60"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation>Nem lehet hozzárendelni a nem létező &quot;%1&quot; tulajdonsághoz</translation>
+ </message>
+ <message>
+ <location line="-50"/>
+ <source>Connections: nested objects not allowed</source>
+ <translation>Kapcsolatok: az illesztett objektumok nem engedélyezettek</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connections: syntax error</source>
+ <translation>Kapcsolatok: szintakszishiba</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Connections: script expected</source>
+ <translation>Kapcsolatok: script szükséges</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeEngine</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativesqldatabase.cpp" line="+204"/>
+ <source>executeSql called outside transaction()</source>
+ <translation>Az executeSql a transaction()-on kívülről lett meghívva</translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>Read-only Transaction</source>
+ <translation>Csak olvasható tranzakció</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Version mismatch: expected %1, found %2</source>
+ <translation>Verzió eltérés: várt: %1, kapott: %2</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>SQL transaction failed</source>
+ <translation>Az SQL tranzakció sikertelen</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>transaction: missing callback</source>
+ <translation>tranzakció: hiányzó callback</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <location line="+16"/>
+ <source>SQL: database version mismatch</source>
+ <translation>SQL: adatbázis verzió eltérés</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeFlipable</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeflipable.cpp" line="+127"/>
+ <source>front is a write-once property</source>
+ <translation>a front csak egyszer írható tulajdonság</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>back is a write-once property</source>
+ <translation>a back csak egyszer írható tulajdonság</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeImportDatabase</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativeimport.cpp" line="+294"/>
+ <source>module &quot;%1&quot; definition &quot;%2&quot; not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>plugin cannot be loaded for module &quot;%1&quot;: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>module &quot;%1&quot; plugin &quot;%2&quot; not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+79"/>
+ <location line="+55"/>
+ <source>module &quot;%1&quot; version %2.%3 is not installed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-53"/>
+ <source>module &quot;%1&quot; is not installed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <location line="+19"/>
+ <source>&quot;%1&quot;: no such directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>import &quot;%1&quot; has no qmldir and no namespace</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>- %1 is not a namespace</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>- nested namespaces not allowed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <location line="+4"/>
+ <source>local directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>is ambiguous. Found in %1 and in %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>is ambiguous. Found in %1 in version %2.%3 and %4.%5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>is instantiated recursively</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>is not a type</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeInfo</name>
+ <message>
+ <source>unknown location</source>
+ <translation type="obsolete">ismeretlen hely</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeKeyNavigationAttached</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp" line="+70"/>
+ <source>KeyNavigation is only available via attached properties</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeKeysAttached</name>
+ <message>
+ <location line="+1"/>
+ <source>Keys is only available via attached properties</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeListModel</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativelistmodel.cpp" line="+399"/>
+ <source>remove: index %1 out of range</source>
+ <translation>remove: a(z) %1 index túl nagy</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>insert: value is not an object</source>
+ <translation>insert: az érték nem objektum</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>insert: index %1 out of range</source>
+ <translation>insert: a(z) %1 index túl nagy</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>move: out of range</source>
+ <translation>move: határokon kívül</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>append: value is not an object</source>
+ <translation>append: az érték nem objektum</translation>
+ </message>
+ <message>
+ <location line="+132"/>
+ <location line="+15"/>
+ <source>ListElement: cannot contain nested elements</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>get: index %1 out of range</source>
+ <translation type="obsolete">get: a(z) %1 index túl nagy</translation>
+ </message>
+ <message>
+ <location line="-92"/>
+ <source>set: value is not an object</source>
+ <translation>set: az érték nem objektum</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location line="+34"/>
+ <source>set: index %1 out of range</source>
+ <translation>set: a(z) %1 index túl nagy</translation>
+ </message>
+ <message>
+ <source>ListElement: cannot use default property</source>
+ <translation type="obsolete">ListElement: nem lehet az alapértelmezett tulajdonságot használni</translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>ListElement: cannot use reserved &quot;id&quot; property</source>
+ <translation>ListElement: nem lehet a lefoglalt &quot;id&quot; tulajdonságot használni</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>ListElement: cannot use script for property value</source>
+ <translation>ListElement: nem lehet scriptet használni tulajdonság értéknek</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>ListModel: undefined property &apos;%1&apos;</source>
+ <translation>ListModel: nem definiált tulajdonság: &apos;%1&apos;</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeLoader</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeloader.cpp" line="+313"/>
+ <source>Loader does not support loading non-visual elements.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeParentAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="-169"/>
+ <source>Unable to preserve appearance under complex transform</source>
+ <translation>Nem lehet a kinézetet megőrizni a komplex transzformáció alatt</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under non-uniform scale</source>
+ <translation>Nem lehet a kinézetet megőrizni a nem-uniform skálázás alatt</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under scale of 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeParentChange</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativestateoperations.cpp" line="+95"/>
+ <source>Unable to preserve appearance under complex transform</source>
+ <translation type="unfinished">Nem lehet a kinézetet megőrizni a komplex transzformáció alatt</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under non-uniform scale</source>
+ <translation type="unfinished">Nem lehet a kinézetet megőrizni a nem-uniform skálázás alatt</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under scale of 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeParser</name>
+ <message>
+ <location filename="../src/declarative/qml/parser/qdeclarativejslexer.cpp" line="+579"/>
+ <source>Illegal character</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Unclosed string at end of line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Illegal escape squence</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-77"/>
+ <location line="+123"/>
+ <location line="+54"/>
+ <source>Illegal unicode escape sequence</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-28"/>
+ <source>Unclosed comment at end of file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+102"/>
+ <source>Illegal syntax for exponential number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Identifier cannot start with numeric literal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+338"/>
+ <source>Unterminated regular expression literal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Invalid regular expression flag &apos;%0&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <location line="+22"/>
+ <source>Unterminated regular expression backslash sequence</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unterminated regular expression class</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/qml/parser/qdeclarativejsparser.cpp" line="+1828"/>
+ <location line="+67"/>
+ <source>Syntax error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-65"/>
+ <source>Unexpected token `%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <location line="+24"/>
+ <source>Expected token `%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativescriptparser.cpp" line="+271"/>
+ <source>Expected type name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-11"/>
+ <location line="+431"/>
+ <location line="+59"/>
+ <source>Property value set multiple times</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-343"/>
+ <source>Invalid import qualifier ID</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Reserved name &quot;Qt&quot; cannot be used as an qualifier</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Script import qualifiers must be unique.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Script import requires a qualifier</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Library import requires a version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Expected parameter type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Invalid property type modifier</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Unexpected property type modifier</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Expected property type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Readonly not yet supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+215"/>
+ <source>JavaScript declaration outside Script element</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePauseAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="-1977"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePixmapCache</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativepixmapcache.cpp" line="+190"/>
+ <source>Error decoding: %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+70"/>
+ <source>Failed to get image from provider: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <location line="+345"/>
+ <source>Cannot open: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Unknown Error loading %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePropertyAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+1102"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePropertyChanges</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativepropertychanges.cpp" line="+267"/>
+ <source>PropertyChanges does not support creating state-specific objects.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+157"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot assign to read-only property &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeTextInput</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativetextinput.cpp" line="+793"/>
+ <location line="+8"/>
+ <source>Could not load cursor delegate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Could not instantiate cursor delegate</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeVME</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativevme.cpp" line="+194"/>
+ <source>Unable to create object of type %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+390"/>
+ <source>Cannot assign value %1 to property %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Cannot assign object type %1 with no default method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot connect mismatched signal/slot %1 %vs. %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cannot assign an object to signal property %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+146"/>
+ <source>Cannot assign object to list</source>
+ <translation type="unfinished">Nem lehet objektumot listához rendelni</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Cannot assign object to interface property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unable to create attached object</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Cannot set properties on %1 as it is null</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeVisualDataModel</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp" line="+1088"/>
+ <source>Delegate component must be Item type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeXmlListModel</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeutilmodule.cpp" line="-12"/>
+ <location line="+2"/>
+ <source>Qt was built without support for xmlpatterns</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeXmlListModelRole</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel_p.h" line="+174"/>
+ <source>An XmlRole query must not start with &apos;/&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeXmlRoleList</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="+712"/>
+ <source>An XmlListModel query must start with &apos;/&apos; or &quot;//&quot;</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -1262,28 +2908,28 @@ erre
<message>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
- <translation>QDial</translation>
+ <translation></translation>
</message>
<message>
<location line="+2"/>
<source>SpeedoMeter</source>
- <translation>Sebességmérő</translation>
+ <translation></translation>
</message>
<message>
<location line="+2"/>
<source>SliderHandle</source>
- <translation>CsúszkaKezelő</translation>
+ <translation></translation>
</message>
</context>
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+636"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+645"/>
<source>What&apos;s This?</source>
<translation>Mi ez?</translation>
</message>
<message>
- <location line="-135"/>
+ <location line="-122"/>
<source>Done</source>
<translation>Kész</translation>
</message>
@@ -1291,9 +2937,9 @@ erre
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1872"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1920"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+622"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+649"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1305,7 +2951,7 @@ erre
<message>
<location line="+0"/>
<source>&amp;Save</source>
- <translation>&amp;Mentés</translation>
+ <translation>Menté&amp;s</translation>
</message>
<message>
<location line="+3"/>
@@ -1315,12 +2961,12 @@ erre
<message>
<location line="+3"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
<location line="+0"/>
<source>&amp;Cancel</source>
- <translation>&amp;Mégse</translation>
+ <translation>&amp;Mégsem</translation>
</message>
<message>
<location line="+3"/>
@@ -1335,12 +2981,12 @@ erre
<message>
<location line="+3"/>
<source>Apply</source>
- <translation>Alkalmazza</translation>
+ <translation>Alkalmaz</translation>
</message>
<message>
<location line="+3"/>
<source>Reset</source>
- <translation>Visszaállítás</translation>
+ <translation>Törlés</translation>
</message>
<message>
<location line="+3"/>
@@ -1350,12 +2996,12 @@ erre
<message>
<location line="+4"/>
<source>Don&apos;t Save</source>
- <translation>Ne mentse</translation>
+ <translation>Nincs mentés</translation>
</message>
<message>
<location line="+4"/>
<source>Discard</source>
- <translation>Eldob</translation>
+ <translation>Elvetés</translation>
</message>
<message>
<location line="+3"/>
@@ -1365,7 +3011,7 @@ erre
<message>
<location line="+3"/>
<source>Yes to &amp;All</source>
- <translation>Igen az &amp;összesre</translation>
+ <translation>&amp;Mindent elfogad</translation>
</message>
<message>
<location line="+3"/>
@@ -1375,12 +3021,12 @@ erre
<message>
<location line="+3"/>
<source>N&amp;o to All</source>
- <translation>&amp;Nem az összesre</translation>
+ <translation>Mindent &amp;kihagy</translation>
</message>
<message>
<location line="+3"/>
<source>Save All</source>
- <translation>Az összes mentése</translation>
+ <translation>Mindet menti</translation>
</message>
<message>
<location line="+3"/>
@@ -1390,17 +3036,17 @@ erre
<message>
<location line="+3"/>
<source>Retry</source>
- <translation>Újra próbálkozás</translation>
+ <translation>Újra</translation>
</message>
<message>
<location line="+3"/>
<source>Ignore</source>
- <translation>Mellőzés</translation>
+ <translation>Kihagyás</translation>
</message>
<message>
<location line="+3"/>
<source>Restore Defaults</source>
- <translation>Alapértelemezett beállítások visszaállítása</translation>
+ <translation>Alapértelmezések visszaállítása</translation>
</message>
<message>
<location line="-29"/>
@@ -1429,7 +3075,7 @@ erre
<location line="+3"/>
<source>Kind</source>
<comment>Match OS X Finder</comment>
- <translation>Fajta</translation>
+ <translation>Kind</translation>
</message>
<message>
<location line="+2"/>
@@ -1440,7 +3086,7 @@ erre
<message>
<location line="+6"/>
<source>Date Modified</source>
- <translation>Dátum módosítva</translation>
+ <translation>Módosítás dátuma</translation>
</message>
</context>
<context>
@@ -1453,12 +3099,12 @@ erre
<message>
<location line="+2"/>
<source>Dock</source>
- <translation>Dokkolás</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Float</source>
- <translation>Lebegtetés</translation>
+ <translation></translation>
</message>
</context>
<context>
@@ -1477,17 +3123,7 @@ erre
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+414"/>
- <source>&amp;Show this message again</source>
- <translation>Az üzenet újbóli &amp;megjelenítése</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>&amp;OK</source>
- <translation>&amp;OK</translation>
- </message>
- <message>
- <location line="-207"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+208"/>
<source>Debug Message:</source>
<translation>Debug üzenet:</translation>
</message>
@@ -1501,110 +3137,112 @@ erre
<source>Fatal Error:</source>
<translation>Végzetes hiba:</translation>
</message>
+ <message>
+ <location line="+200"/>
+ <source>&amp;Show this message again</source>
+ <translation>Üzenet megjelenítése i&amp;smét</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
</context>
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+697"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+703"/>
<location line="+155"/>
<source>Destination file exists</source>
- <translation>A cél fájl létezik</translation>
+ <translation>A célfájl már létezik</translation>
</message>
<message>
<location line="-140"/>
<source>Will not rename sequential file using block copy</source>
- <translation>Blokkos másolásnál nem lesznek átnevezve az egymást követő fájlok</translation>
+ <translation>A szekvenciális fájlok nem nevezhetők át másolással</translation>
</message>
<message>
<location line="+23"/>
<source>Cannot remove source file</source>
- <translation>Nem lehet a forrás fájlt eltávolítani</translation>
+ <translation>A forrás nem törölhető</translation>
</message>
<message>
<location line="+130"/>
<source>Cannot open %1 for input</source>
- <translation>Nem lehet megnyitni %1-t bementre</translation>
+ <translation>A(z) %1 nem nyitható meg bemenetként</translation>
</message>
<message>
<location line="+17"/>
<source>Cannot open for output</source>
- <translation>Nem lehet megnyitni a kimenetre</translation>
+ <translation>Nem nyitható meg kimenetként</translation>
</message>
<message>
<location line="+10"/>
<source>Failure to write block</source>
- <translation>Hiba történt a blokk írás közben</translation>
+ <translation>Hiba a blokk írásakor</translation>
</message>
<message>
<location line="+13"/>
<source>Cannot create %1 for output</source>
- <translation>Nem lehet létrehozni a(z) %1-t kimenetre</translation>
+ <translation>A(z) %1 nem hozható létre</translation>
</message>
</context>
<context>
<name>QFileDialog</name>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+558"/>
- <location line="+450"/>
+ <location line="+481"/>
<source>All Files (*)</source>
- <translation>Az összes fájl (*)</translation>
- </message>
- <message>
- <location filename="../src/gui/dialogs/qfiledialog.ui"/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>Back</source>
- <translation>Vissza</translation>
+ <translation>Minden fájl (*)</translation>
</message>
<message>
- <location/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>List View</source>
- <translation>Lista nézet</translation>
+ <location line="+216"/>
+ <source>Directories</source>
+ <translation>Könyvtárak</translation>
</message>
<message>
- <location/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>Detail View</source>
- <translation>Részletes nézet</translation>
+ <location line="-3"/>
+ <location line="+55"/>
+ <location line="+1532"/>
+ <source>&amp;Open</source>
+ <translation>&amp;Megnyitás</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+464"/>
- <location line="+1"/>
- <source>File</source>
- <translation>Fájl</translation>
+ <location line="-1587"/>
+ <location line="+55"/>
+ <source>&amp;Save</source>
+ <translation>Menté&amp;s</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-467"/>
+ <location line="-766"/>
<source>Open</source>
<translation>Megnyitás</translation>
</message>
<message>
- <location line="+2"/>
- <source>Save As</source>
- <translation>Mentés másként</translation>
- </message>
- <message>
- <location line="+689"/>
- <location line="+50"/>
- <location line="+1528"/>
- <source>&amp;Open</source>
- <translation>&amp;Megnyitás</translation>
+ <location line="+1537"/>
+ <source>%1 already exists.
+Do you want to replace it?</source>
+ <translation>%1 már létezik.
+Lecseréli?</translation>
</message>
<message>
- <location line="-1578"/>
- <location line="+50"/>
- <source>&amp;Save</source>
- <translation>&amp;Mentés</translation>
+ <location line="+20"/>
+ <source>%1
+File not found.
+Please verify the correct file name was given.</source>
+ <translation>%1
+A fájl nem található.
+Ellenőrizze, hogy jól adta-e meg a fájl nevét.</translation>
</message>
<message>
- <location line="+1801"/>
- <source>Recent Places</source>
- <translation>Utolsó helyek</translation>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/>
+ <source>My Computer</source>
+ <translation>Számítógép</translation>
</message>
<message>
- <location line="-2511"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1526"/>
<source>&amp;Rename</source>
- <translation>&amp;Átnevezés</translation>
+ <translation>Át&amp;nevezés</translation>
</message>
<message>
<location line="+1"/>
@@ -1617,101 +3255,107 @@ erre
<translation>&amp;Rejtett fájlok megjelenítése</translation>
</message>
<message>
- <location line="+1957"/>
- <source>New Folder</source>
- <translation>Új mappa</translation>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Back</source>
+ <translation>Vissza</translation>
</message>
<message>
- <location line="-1992"/>
- <source>Find Directory</source>
- <translation>Könyvtár keresése</translation>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Parent Directory</source>
+ <translation>Szülőkönyvtár</translation>
</message>
<message>
- <location line="+696"/>
- <source>Directories</source>
- <translation>Könyvtárak</translation>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>List View</source>
+ <translation>Lista nézet</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+174"/>
- <source>All Files (*.*)</source>
- <translation>Az összes fájl (*.*)</translation>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Detail View</source>
+ <translation>Részletes nézet</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-655"/>
- <location line="+659"/>
- <source>Directory:</source>
- <translation>Könyvtár:</translation>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Files of type:</source>
+ <translation>Fájlok típusa:</translation>
</message>
<message>
- <location line="+810"/>
- <source>%1 already exists.
-Do you want to replace it?</source>
- <translation>A(z) %1 már létezik.
-Szeretné lecserélni?</translation>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
+ <location line="+679"/>
+ <source>Directory:</source>
+ <translation>Könyvtár:</translation>
</message>
<message>
- <location line="+20"/>
- <source>%1
+ <source>
File not found.
-Please verify the correct file name was given.</source>
- <translation>%1
-Fájl nem található.
-Kérem ellenőrizze, hogy helyes fájlnevet adott meg.</translation>
- </message>
- <message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/>
- <source>My Computer</source>
- <translation>Sajátgép</translation>
- </message>
- <message>
- <location filename="../src/gui/dialogs/qfiledialog.ui"/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>Parent Directory</source>
- <translation>Szülő könyvtár</translation>
- </message>
- <message>
- <location/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>Files of type:</source>
- <translation>Típusfájlok:</translation>
+Please verify the correct file name was given</source>
+ <translation type="obsolete">
+A fájl nem található.
+Ellenőrizze, hogy jól adta-e meg a fájl nevét</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
+ <location line="+785"/>
<location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
<translation>%1
A könyvtár nem található.
-Kérem ellenőrizze le, hogy helyes könyvtár nevet adott meg.</translation>
+Ellenőrizze, hogy jól adta-e meg a könyvtár nevét.</translation>
</message>
<message>
<location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
- <translation>A(z) &apos;%1&apos; írásvédett.
-Mégis törölni szeretné?</translation>
+ <translation>&apos;%1&apos; írásvédett.
+Biztosan törölni akarja?</translation>
</message>
<message>
<location line="+5"/>
<source>Are sure you want to delete &apos;%1&apos;?</source>
- <translation>Törölni szeretné &apos;%1&apos;?</translation>
+ <translation>Biztosan törölni akarja &apos;%1&apos;-t?</translation>
</message>
<message>
<location line="+15"/>
<source>Could not delete directory.</source>
- <translation>Nem sikerült törölni a könyvtárat.</translation>
+ <translation>A könyvtár nem törölhető.</translation>
+ </message>
+ <message>
+ <location line="+404"/>
+ <source>Recent Places</source>
+ <translation>Legutóbbi helyek</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+148"/>
+ <source>All Files (*.*)</source>
+ <translation>Minden fájl (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="-4"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2569"/>
+ <source>Save As</source>
+ <translation>Mentés másként</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+464"/>
<source>Drive</source>
- <translation>Vezérlő</translation>
+ <translation>Meghajtó</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+3"/>
+ <location line="+1"/>
+ <source>File</source>
+ <translation>Fájl</translation>
+ </message>
+ <message>
+ <location line="+5"/>
<source>File Folder</source>
<comment>Match Windows Explorer</comment>
- <translation>Fájl mappa</translation>
+ <translation>Mappa</translation>
</message>
<message>
<location line="+2"/>
@@ -1723,13 +3367,13 @@ Mégis törölni szeretné?</translation>
<location line="+9"/>
<source>Alias</source>
<comment>Mac OS X Finder</comment>
- <translation>Álnév</translation>
+ <translation>Link</translation>
</message>
<message>
<location line="+2"/>
<source>Shortcut</source>
<comment>All other platforms</comment>
- <translation>Gyorsbillentyű</translation>
+ <translation>Parancsikon</translation>
</message>
<message>
<location line="+7"/>
@@ -1737,9 +3381,14 @@ Mégis törölni szeretné?</translation>
<translation>Ismeretlen</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2111"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-4"/>
+ <source>Find Directory</source>
+ <translation>Keresés a könyvtárban</translation>
+ </message>
+ <message>
+ <location line="+29"/>
<source>Show </source>
- <translation>Megjelenítés</translation>
+ <translation>Megjelenítés </translation>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.ui"/>
@@ -1748,80 +3397,86 @@ Mégis törölni szeretné?</translation>
<translation>Előre</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+7"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1992"/>
+ <source>New Folder</source>
+ <translation>Új könyvtár</translation>
+ </message>
+ <message>
+ <location line="-1985"/>
<source>&amp;New Folder</source>
- <translation>&amp;Új mappa</translation>
+ <translation>Ú&amp;j könyvtár</translation>
</message>
<message>
- <location line="+667"/>
- <location line="+38"/>
+ <location line="+687"/>
+ <location line="+43"/>
<source>&amp;Choose</source>
<translation>&amp;Kiválasztás</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qsidebar.cpp" line="+442"/>
<source>Remove</source>
- <translation>Eltávolítás</translation>
+ <translation>Törlés</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-698"/>
- <location line="+663"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-723"/>
+ <location line="+683"/>
<source>File &amp;name:</source>
- <translation>Fájl &amp;név:</translation>
+ <translation>Fájl &amp;neve:</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.ui"/>
<location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
<source>Look in:</source>
- <translation>Benéz:</translation>
+ <translation>Keresés itt:</translation>
</message>
<message>
<location/>
<location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
<source>Create New Folder</source>
- <translation>Új mappa létrehozása</translation>
+ <translation>Új könyvtár létrehozása</translation>
</message>
-</context>
-<context>
- <name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+476"/>
- <source>%1 TB</source>
- <translation>%1 TB</translation>
+ <location/>
+ <source>Go back</source>
+ <translation>Vissza</translation>
</message>
<message>
- <location line="+2"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
- <source>%1 GB</source>
- <translation>%1 GB</translation>
+ <location/>
+ <source>Go forward</source>
+ <translation>Előre</translation>
</message>
<message>
- <location line="+2"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
- <source>%1 MB</source>
- <translation>%1 MB</translation>
+ <location/>
+ <source>Go to the parent directory</source>
+ <translation>Szülő mappába</translation>
</message>
<message>
- <location line="+2"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
- <source>%1 KB</source>
- <translation>%1 KB</translation>
+ <location/>
+ <source>Create a New Folder</source>
+ <translation>Új mappa létrehozása</translation>
</message>
<message>
- <location line="+1"/>
- <source>%1 bytes</source>
- <translation>%1 bájt</translation>
+ <location/>
+ <source>Change to list view mode</source>
+ <translation>Váltás lista nézetre</translation>
</message>
<message>
- <location line="+77"/>
+ <location/>
+ <source>Change to detail view mode</source>
+ <translation>Váltás részletes lista nézetre</translation>
+ </message>
+</context>
+<context>
+ <name>QFileSystemModel</name>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+836"/>
<source>Invalid filename</source>
<translation>Érvénytelen fájlnév</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;A(z) &quot;%1&quot; név nem használható.&lt;/b&gt;&lt;p&gt;Próbáljon meg más nevet használni, kevesebb karakterrel vagy írásjelekek nélkül.</translation>
+ <translation>&lt;b&gt;A(z) &quot;%1&quot; név nem használható.&lt;/b&gt;&lt;p&gt;Próbálja meg másik névvel, kevesebb karakterrel vagy írásjelek nélkül.</translation>
</message>
<message>
<location line="+64"/>
@@ -1837,7 +3492,7 @@ Mégis törölni szeretné?</translation>
<location line="+4"/>
<source>Kind</source>
<comment>Match OS X Finder</comment>
- <translation>Fajta</translation>
+ <translation>Kind</translation>
</message>
<message>
<location line="+2"/>
@@ -1848,12 +3503,12 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+7"/>
<source>Date Modified</source>
- <translation>Dátum módosítva</translation>
+ <translation>Módosítás dátuma</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+258"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+261"/>
<source>My Computer</source>
- <translation>Sajátgép</translation>
+ <translation>Számítógép</translation>
</message>
<message>
<location line="+2"/>
@@ -1861,6 +3516,35 @@ Mégis törölni szeretné?</translation>
<translation>Számítógép</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="-176"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+482"/>
+ <source>%1 TB</source>
+ <translation>%1 TB</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
+ <source>%1 GB</source>
+ <translation>%1 GB</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
+ <source>%1 KB</source>
+ <translation>%1 KB</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1 bytes</source>
+ <translation>%1 byte</translation>
+ </message>
+ <message>
<location filename="../src/gui/itemviews/qdirmodel.cpp" line="+1"/>
<source>%1 byte(s)</source>
<translation>%1 bájt</translation>
@@ -1897,7 +3581,7 @@ Mégis törölni szeretné?</translation>
<message>
<location line="-1311"/>
<source>Demi</source>
- <translation>Fél</translation>
+ <translation>Félkövér</translation>
</message>
<message>
<location line="+6"/>
@@ -1915,12 +3599,12 @@ Mégis törölni szeretné?</translation>
<location line="-1165"/>
<location line="+1167"/>
<source>Oblique</source>
- <translation>Homályos</translation>
+ <translation>Ferde</translation>
</message>
<message>
<location line="+704"/>
<source>Any</source>
- <translation>Bármilyen</translation>
+ <translation>Bármelyik</translation>
</message>
<message>
<location line="+3"/>
@@ -1935,7 +3619,7 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Cyrillic</source>
- <translation>Ciril</translation>
+ <translation>Cirill</translation>
</message>
<message>
<location line="+3"/>
@@ -1955,17 +3639,17 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Syriac</source>
- <translation>Szíriai</translation>
+ <translation>Szír</translation>
</message>
<message>
<location line="+3"/>
<source>Thaana</source>
- <translation>Thana</translation>
+ <translation>Thaana</translation>
</message>
<message>
<location line="+3"/>
<source>Devanagari</source>
- <translation>Dévanágari</translation>
+ <translation>Dévangári</translation>
</message>
<message>
<location line="+3"/>
@@ -2000,12 +3684,12 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Kannada</source>
- <translation>Kanadai</translation>
+ <translation>Kannada</translation>
</message>
<message>
<location line="+3"/>
<source>Malayalam</source>
- <translation>Maláj</translation>
+ <translation>Malayalam</translation>
</message>
<message>
<location line="+3"/>
@@ -2015,7 +3699,7 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Thai</source>
- <translation>Tájföldi</translation>
+ <translation>Thai</translation>
</message>
<message>
<location line="+3"/>
@@ -2030,12 +3714,12 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Myanmar</source>
- <translation>Mianmari</translation>
+ <translation>Miannmari</translation>
</message>
<message>
<location line="+3"/>
<source>Georgian</source>
- <translation>Grúz</translation>
+ <translation>Gergely</translation>
</message>
<message>
<location line="+3"/>
@@ -2065,12 +3749,12 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Vietnamese</source>
- <translation>Vietnámi</translation>
+ <translation>Vietnám</translation>
</message>
<message>
<location line="+3"/>
<source>Symbol</source>
- <translation>Szimbólum</translation>
+ <translation>Szimbolum</translation>
</message>
<message>
<location line="+3"/>
@@ -2080,7 +3764,7 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Runic</source>
- <translation>Székely</translation>
+ <translation>Rúna</translation>
</message>
<message>
<location line="+3"/>
@@ -2091,14 +3775,14 @@ Mégis törölni szeretné?</translation>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+776"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+768"/>
<source>&amp;Font</source>
- <translation>&amp;Betű</translation>
+ <translation>&amp;Betűtípus</translation>
</message>
<message>
<location line="+1"/>
<source>Font st&amp;yle</source>
- <translation>Betű st&amp;ílus</translation>
+ <translation>Betűtípu&amp;s stílusa</translation>
</message>
<message>
<location line="+1"/>
@@ -2113,97 +3797,81 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+2"/>
<source>Stri&amp;keout</source>
- <translation>Ki&amp;talál</translation>
+ <translation>Á&amp;thúzott</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Underline</source>
- <translation>&amp;Aláhúzás</translation>
+ <translation>&amp;Aláhúzott</translation>
</message>
<message>
<location line="+1"/>
<source>Sample</source>
- <translation>Minta</translation>
+ <translation>Példa</translation>
</message>
<message>
- <location line="-608"/>
- <location line="+257"/>
- <source>Select Font</source>
- <translation>Betű kiválasztása</translation>
+ <location line="+1"/>
+ <source>Wr&amp;iting System</source>
+ <translation>Í&amp;rásmód</translation>
</message>
<message>
- <location line="+352"/>
- <source>Wr&amp;iting System</source>
- <translation>Rendszer &amp;írása</translation>
+ <location line="-596"/>
+ <source>Select Font</source>
+ <translation>Betűtípus kiválasztása</translation>
</message>
</context>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
- <source>Host %1 found</source>
- <translation>%1 host megtalálva</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>Host found</source>
- <translation>Hoszt megtalálva</translation>
- </message>
- <message>
- <location filename="../src/network/access/qftp.cpp" line="+1008"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
- <location line="+1451"/>
- <source>Connected to host %1</source>
- <translation>%1 hosztra csatlkoztatva</translation>
- </message>
- <message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+7"/>
- <source>Connected to host</source>
- <translation>Hosztra csatlakoztatva</translation>
- </message>
- <message>
- <location line="-5"/>
- <source>Connection to %1 closed</source>
- <translation>%1-re csatlakoztatása bezárva</translation>
- </message>
- <message>
- <location filename="../src/network/access/qftp.cpp" line="+1377"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="-243"/>
- <location line="+250"/>
- <source>Connection closed</source>
- <translation>Kapcsolat bezárva</translation>
+ <location filename="../src/network/access/qftp.cpp" line="+828"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
+ <source>Not connected</source>
+ <translation>Nincs kapcsolat</translation>
</message>
<message>
- <location line="-1489"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="-1566"/>
+ <location line="+68"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+65"/>
<source>Host %1 not found</source>
- <translation>%1 host nem található</translation>
+ <translation>%1 kiszolgáló nem található</translation>
</message>
<message>
<location line="+4"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+4"/>
<source>Connection refused to host %1</source>
- <translation>Kapcsolat elutasítva a(z) %1 hoszttal</translation>
+ <translation>A kapcsolódás %1 kiszolgálóhoz elutasítva</translation>
</message>
<message>
<location line="+4"/>
<source>Connection timed out to host %1</source>
- <translation>Kapcsolati időtúllépés a %1 hoszttal</translation>
+ <translation>A várakozási idő lejárt a(z) %1 kiszolgálóhoz</translation>
</message>
<message>
- <location line="+501"/>
+ <location line="+104"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+102"/>
+ <location line="+1451"/>
+ <source>Connected to host %1</source>
+ <translation>Kapcsolódva %1 kiszolgálóhoz</translation>
+ </message>
+ <message>
+ <location line="+219"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1290"/>
+ <source>Connection refused for data connection</source>
+ <translation>Az adatkapcsolat elutasítva</translation>
+ </message>
+ <message>
+ <location line="+178"/>
<location line="+29"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+458"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+195"/>
<location line="+728"/>
<source>Unknown error</source>
<translation>Ismeretlen hiba</translation>
</message>
<message>
- <location line="+891"/>
+ <location line="+897"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+77"/>
<source>Connecting to host failed:
%1</source>
- <translation>A hoszthoz kapcsolódás nem sikerült:
+ <translation>A kapcsolódás a kiszolgálóhoz nem sikerült:
%1</translation>
</message>
<message>
@@ -2211,7 +3879,7 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Login failed:
%1</source>
- <translation>Bejelentkezési hiba:
+ <translation>A bejelentkezés nem sikerült:
%1</translation>
</message>
<message>
@@ -2219,7 +3887,7 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Listing directory failed:
%1</source>
- <translation>Könyvtár listázási hiba:
+ <translation>A könyvtár listázása nem sikerült:
%1</translation>
</message>
<message>
@@ -2227,7 +3895,7 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Changing directory failed:
%1</source>
- <translation>Könyvtár változtatási hiba:
+ <translation>A könyvtárváltás nem sikerült:
%1</translation>
</message>
<message>
@@ -2235,7 +3903,7 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Downloading file failed:
%1</source>
- <translation>Fájl letöltési hiba:
+ <translation>A fájl letöltése nem sikerült:
%1</translation>
</message>
<message>
@@ -2243,7 +3911,7 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Uploading file failed:
%1</source>
- <translation>Fájl feltöltési hiba:
+ <translation>A fájl feltöltése nem sikerült:
%1</translation>
</message>
<message>
@@ -2251,7 +3919,7 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Removing file failed:
%1</source>
- <translation>Fájl eltávolítási hiba:
+ <translation>A fájl törlése nem sikerült:
%1</translation>
</message>
<message>
@@ -2259,7 +3927,7 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Creating directory failed:
%1</source>
- <translation>Könyvtár létrehozási hiba:
+ <translation>A könyvtár létrehozása nem sikerült:
%1</translation>
</message>
<message>
@@ -2267,39 +3935,66 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Removing directory failed:
%1</source>
- <translation>Könyvtár eltávolítása hiba:
+ <translation>A könyvtár törlése nem sikerült:
%1</translation>
</message>
<message>
- <location line="-1529"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="-1356"/>
- <source>Not connected</source>
- <translation>Nincs csatlakoztatva</translation>
+ <location line="+28"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+25"/>
+ <location line="+250"/>
+ <source>Connection closed</source>
+ <translation>A kapcsolat bezárult</translation>
</message>
<message>
- <location line="+399"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+332"/>
- <source>Connection refused for data connection</source>
- <translation>Adat kapcsolat érdekében történő csatlakozás megtagadva</translation>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-11"/>
+ <source>Host %1 found</source>
+ <translation>%1 kiszolgálót megtaláltam</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Connection to %1 closed</source>
+ <translation>A kapcsolat %1 kiszolgálóval bezárult</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Host found</source>
+ <translation>A kiszolgálót megtaláltam</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Connected to host</source>
+ <translation>Kapcsolódva a kiszolgálóhoz</translation>
+ </message>
+</context>
+<context>
+ <name>QGstreamerPlayerSession</name>
+ <message>
+ <source>Unable to play %1</source>
+ <translation type="obsolete">Nem lehet lejátszani: %1</translation>
</message>
</context>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+185"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+103"/>
<source>Unknown error</source>
<translation>Ismeretlen hiba</translation>
</message>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+171"/>
+ <source>No host name given</source>
+ <translation>Nem adott meg gépnevet</translation>
+ </message>
</context>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+257"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+260"/>
<location line="+32"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+220"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+215"/>
<location line="+27"/>
<source>Host not found</source>
- <translation>A hoszt nem található</translation>
+ <translation>A kiszolgáló nem található</translation>
</message>
<message>
<location line="-45"/>
@@ -2307,90 +4002,34 @@ Mégis törölni szeretné?</translation>
<location filename="../src/network/kernel/qhostinfo_win.cpp" line="-34"/>
<location line="+29"/>
<source>Unknown address type</source>
- <translation>Ismeretlen cím típus</translation>
- </message>
- <message>
- <location line="+10"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-19"/>
- <location line="+27"/>
- <source>Unknown error</source>
- <translation>Ismeretlen hiba</translation>
+ <translation>Ismeretlen címtípus</translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-67"/>
+ <location line="-88"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-59"/>
<source>No host name given</source>
- <translation>Nincs hoszt név megadva</translation>
+ <translation>Nem adott meg gépnevet</translation>
</message>
<message>
- <location line="+0"/>
+ <location line="+1"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+0"/>
<source>Invalid hostname</source>
- <translation>Érvénytelen hoszt név</translation>
+ <translation>Érvénytelen gépnév</translation>
+ </message>
+ <message>
+ <location line="+97"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+40"/>
+ <location line="+27"/>
+ <source>Unknown error</source>
+ <translation>Ismeretlen hiba</translation>
</message>
</context>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+578"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1835"/>
- <source>Connection refused</source>
- <translation>Kapcsolat megtagadva</translation>
- </message>
- <message>
- <location filename="../src/network/access/qhttp.cpp" line="+2639"/>
- <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>A(z) %1 hoszt nem található</translation>
- </message>
- <message>
- <location line="-62"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="-45"/>
- <source>Wrong content length</source>
- <translation>Hibás tartalom hossz</translation>
- </message>
- <message>
- <location line="+82"/>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
- <location line="+19"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+48"/>
- <source>HTTP request failed</source>
- <translation>HTTP kérési hiba</translation>
- </message>
- <message>
- <location filename="../src/qt3support/network/q3http.cpp" line="+450"/>
- <source>Host %1 found</source>
- <translation>A(z) %1 hoszt nem található</translation>
- </message>
- <message>
- <location line="+14"/>
- <source>Host found</source>
- <translation>Hoszt megtalálható</translation>
- </message>
- <message>
- <location line="-11"/>
- <source>Connected to host %1</source>
- <translation>%1 hoszthoz csatlakozva van</translation>
- </message>
- <message>
- <location line="+14"/>
- <source>Connected to host</source>
- <translation>Hosztra csatlakoztatva</translation>
- </message>
- <message>
- <location line="-11"/>
- <source>Connection to %1 closed</source>
- <translation>%1-re csatlkozás bezárva</translation>
- </message>
- <message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-22"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+14"/>
- <source>Connection closed</source>
- <translation>Kapcsolat bezárva</translation>
- </message>
- <message>
- <location filename="../src/network/access/qhttp.cpp" line="-1077"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+1582"/>
<location line="+820"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="-1152"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1159"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Ismeretlen hiba</translation>
@@ -2399,30 +4038,60 @@ Mégis törölni szeretné?</translation>
<location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
- <translation>Kérés megszakítva</translation>
+ <translation>A kérés megszakítva</translation>
</message>
<message>
<location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
- <translation>Nincsen szerver beállítva, amire csatlakozni lehetne</translation>
+ <translation>Nincs szerver megadva</translation>
</message>
<message>
- <location line="+168"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+60"/>
+ <location line="+164"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+56"/>
+ <source>Wrong content length</source>
+ <translation>Rossz tartalomhossz</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+4"/>
<source>Server closed connection unexpectedly</source>
<translation>A szerver váratlanul bezárta a kapcsolatot</translation>
</message>
<message>
- <location line="+172"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+113"/>
+ <location line="+383"/>
+ <source>Error writing response to device</source>
+ <translation>Hiba a válasz eszközre írása során</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-6"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
+ <source>Connection refused</source>
+ <translation>A kapcsolat elutasítva</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-325"/>
+ <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 kiszolgáló nem található</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+ <source>HTTP request failed</source>
+ <translation>A HTTP kérés nem sikerült</translation>
+ </message>
+ <message>
+ <location line="+94"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+69"/>
<source>Invalid HTTP response header</source>
- <translation>Érvénytelen HTTP válasz fejléc</translation>
+ <translation>Érvénytelen HTTP válasz-fejléc</translation>
</message>
<message>
<location line="+28"/>
<source>Unknown authentication method</source>
- <translation>Ismeretlen hitelesítési eljárás</translation>
+ <translation>Ismeretlen azonosítási mód</translation>
</message>
<message>
<location line="+97"/>
@@ -2430,57 +4099,83 @@ Mégis törölni szeretné?</translation>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
<source>Invalid HTTP chunked body</source>
- <translation>Érvénytelen nagy HTTP törzs</translation>
+ <translation>Érvénytelen HTTP törzsrészlet</translation>
</message>
<message>
- <location line="+38"/>
- <source>Error writing response to device</source>
- <translation>Hiba történt a válasz eszközre írása közben</translation>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+294"/>
+ <source>Host %1 found</source>
+ <translation>%1 kiszolgálót megtaláltam</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connected to host %1</source>
+ <translation>Kapcsolódva %1 kiszolgálóhoz</translation>
</message>
<message>
- <location line="-173"/>
+ <location line="+3"/>
+ <source>Connection to %1 closed</source>
+ <translation>A kapcsolat %1 kiszolgálóval bezárult</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Host found</source>
+ <translation>A kiszolgálót megtaláltam</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connected to host</source>
+ <translation>Kapcsolódva a kiszolgálóhoz</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+7"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+ <source>Connection closed</source>
+ <translation>A kapcsolat bezárult</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-135"/>
<source>Proxy authentication required</source>
- <translation>Proxy hitelesítés szükséges</translation>
+ <translation>A proxy azonosítást követel</translation>
</message>
<message>
<location line="+4"/>
<source>Authentication required</source>
- <translation>Hitelesítés szükséges</translation>
+ <translation>Azonosítás szükséges</translation>
+ </message>
+ <message>
+ <location line="-2425"/>
+ <source>HTTPS connection requested but SSL support not compiled in</source>
+ <translation>HTTPS kapcsolat kiépítése szükséges, de nincs SSL támogatás</translation>
+ </message>
+ <message>
+ <location line="+2266"/>
+ <source>Connection refused (or timed out)</source>
+ <translation>A kapcsolat elutasítva (vagy időtúllépés történt)</translation>
</message>
<message>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+6"/>
<source>Proxy requires authentication</source>
- <translation>A proxy a hitelesítést kéri</translation>
+ <translation>A proxy azonosítást követel</translation>
</message>
<message>
<location line="+3"/>
<source>Host requires authentication</source>
- <translation>A hoszt hitelesítést kér</translation>
+ <translation>A gép azonosítást követel</translation>
</message>
<message>
<location line="+3"/>
<source>Data corrupted</source>
- <translation>Sérült adat</translation>
+ <translation>Az adatok megsérültek</translation>
</message>
<message>
- <location line="+6"/>
- <source>SSL handshake failed</source>
- <translation>SSL kézfogási hiba</translation>
- </message>
- <message>
- <location line="-3"/>
+ <location line="+3"/>
<source>Unknown protocol specified</source>
- <translation>Ismeretlen protokoll van megadva</translation>
- </message>
- <message>
- <location filename="../src/network/access/qhttp.cpp" line="-159"/>
- <source>Connection refused (or timed out)</source>
- <translation>Kapcsolat megtagadva (vagy időtúllépés)</translation>
+ <translation>Ismeretlen protokoll</translation>
</message>
<message>
- <location line="-2266"/>
- <source>HTTPS connection requested but SSL support not compiled in</source>
- <translation>HTTP kapcsolat lett kérve, de az SSL támogatás nincs beleforgatva</translation>
+ <location line="+3"/>
+ <source>SSL handshake failed</source>
+ <translation>Az SSL kézfogás sikertelen volt</translation>
</message>
</context>
<context>
@@ -2488,17 +4183,17 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/network/socket/qhttpsocketengine.cpp" line="-89"/>
<source>Did not receive HTTP response from proxy</source>
- <translation>Nem kapott HTTP választ a proxy-tól</translation>
+ <translation>A proxy nem küldött HTTP választ</translation>
</message>
<message>
<location line="+25"/>
<source>Error parsing authentication request from proxy</source>
- <translation>Hiba történt a proxy hitelesítés kérésének elemzése közben</translation>
+ <translation>Hiba a proxy azonosítási kérelmének értelmezésekor</translation>
</message>
<message>
<location line="+31"/>
<source>Authentication required</source>
- <translation>Hitelesítés szükséges</translation>
+ <translation>Azonosítás szükséges</translation>
</message>
<message>
<location line="+27"/>
@@ -2508,27 +4203,27 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+10"/>
<source>Error communicating with HTTP proxy</source>
- <translation>Hiba történt a HTTP proxy-val történő kommunikáció közben</translation>
+ <translation>Hiba a HTTP proxyval való kommunikáció során</translation>
</message>
<message>
<location line="+23"/>
<source>Proxy server not found</source>
- <translation>A proxy szerver nem található</translation>
+ <translation>A proxy nem található</translation>
</message>
<message>
<location line="+2"/>
<source>Proxy connection refused</source>
- <translation>A proxy kapcsolat elutasítva</translation>
+ <translation>A proxy elutasította a kapcsolatot</translation>
</message>
<message>
<location line="+2"/>
<source>Proxy server connection timed out</source>
- <translation>Proxy szerver kapcsolódási időtúllépés</translation>
+ <translation>A kapcslat időtúllépés miatt megszakadt a proxxyval</translation>
</message>
<message>
<location line="+2"/>
<source>Proxy connection closed prematurely</source>
- <translation>Proxy kapcsolódás túl korán be lett zárva</translation>
+ <translation>A proxy váratlanul lezárta a kapcsolatot</translation>
</message>
</context>
<context>
@@ -2536,22 +4231,22 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1491"/>
<source>Error opening database</source>
- <translation>Hiba történt az adatbázis megnyitása közben</translation>
+ <translation>Adatbázis megnyitási hiba</translation>
</message>
<message>
<location line="+54"/>
<source>Could not start transaction</source>
- <translation>Nem sikerült elindítani a tranzakciót</translation>
+ <translation>A tranzakció nem indítható</translation>
</message>
<message>
<location line="+13"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+13"/>
<source>Unable to rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
</message>
</context>
<context>
@@ -2559,102 +4254,102 @@ Mégis törölni szeretné?</translation>
<message>
<location line="-1149"/>
<source>Unable to create BLOB</source>
- <translation>Nem lehet BLOB-t létrehozni</translation>
+ <translation>A BLOB nem hozható létre </translation>
</message>
<message>
<location line="+6"/>
<source>Unable to write BLOB</source>
- <translation>Nem lehet írni a BLOB-t</translation>
+ <translation>A BLOB nem írható</translation>
</message>
<message>
<location line="+14"/>
<source>Unable to open BLOB</source>
- <translation>Nem lehet megnyitni a BLOB-t</translation>
+ <translation>A BLOB nem nyitható meg</translation>
</message>
<message>
<location line="+16"/>
<source>Unable to read BLOB</source>
- <translation>Nem lehet olvasni a BLOB-t</translation>
+ <translation>A BLOB nem olvasható</translation>
</message>
<message>
<location line="+125"/>
<location line="+187"/>
<source>Could not find array</source>
- <translation>Nem sikerült megtalálni a tömböt</translation>
+ <translation>A tömb nem található</translation>
</message>
<message>
<location line="-155"/>
<source>Could not get array data</source>
- <translation>Nem sikerüét megszerezni a tömb adatokat</translation>
+ <translation>A tömbbeli adatok nem érhetők el</translation>
</message>
<message>
<location line="+210"/>
<source>Could not get query info</source>
- <translation>Nem sikerült megszerezni a lekérdezi információt</translation>
+ <translation>A lekérdezés-információ nem érhető el</translation>
</message>
<message>
<location line="+20"/>
<source>Could not start transaction</source>
- <translation>Nem sikerült elindítani a tranzakciót</translation>
+ <translation>A tranzakció nem indítható</translation>
</message>
<message>
<location line="+19"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+42"/>
<source>Could not allocate statement</source>
- <translation>Nem sikerült lefoglalni a műveletet</translation>
+ <translation>A művelet helyfoglalása sikertelen</translation>
</message>
<message>
<location line="+5"/>
<source>Could not prepare statement</source>
- <translation>Nem sikerült felkészülni a műveletre</translation>
+ <translation>A művelet előkészítése sikertelen</translation>
</message>
<message>
<location line="+5"/>
<location line="+11"/>
<source>Could not describe input statement</source>
- <translation>Nem sikerült leírni a bemeneti állítást</translation>
+ <translation>A bemeneti művelet leírása sikertelen</translation>
</message>
<message>
<location line="+14"/>
<source>Could not describe statement</source>
- <translation>Nem sikerült leírni az állítást</translation>
+ <translation>A művelet leírása sikertelen</translation>
</message>
<message>
<location line="+115"/>
<source>Unable to close statement</source>
- <translation>Nem lehet megnyitni az állítást</translation>
+ <translation>A művelet lezárása sikertelen</translation>
</message>
<message>
<location line="+8"/>
<source>Unable to execute query</source>
- <translation>Nem lehet végrehajtani a lekérdezést</translation>
+ <translation>A művelet nem hajtható végre</translation>
</message>
<message>
<location line="+46"/>
<source>Could not fetch next item</source>
- <translation>Nem lehet letölteni a következő elemet</translation>
+ <translation>A következő adat nem olvasható ki</translation>
</message>
<message>
<location line="+197"/>
<source>Could not get statement info</source>
- <translation>Nem lehet az művelet információkat megszerezni</translation>
+ <translation>A következő művelet információi nem érhetők el</translation>
</message>
</context>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+2072"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+2120"/>
<source>Permission denied</source>
- <translation>Beleegyezés megtagadva</translation>
+ <translation>Hozzáférés megtagadva</translation>
</message>
<message>
<location line="+3"/>
<source>Too many open files</source>
- <translation>Túl sok fájl megnyitása</translation>
+ <translation>Túl sok fájl van nyitva</translation>
</message>
<message>
<location line="+3"/>
@@ -2664,10 +4359,10 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>No space left on device</source>
- <translation>Nincs több hely a lemezen</translation>
+ <translation>Nincs több hely az eszközön</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1561"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1598"/>
<source>Unknown error</source>
<translation>Ismeretlen hiba</translation>
</message>
@@ -2675,34 +4370,34 @@ Mégis törölni szeretné?</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+256"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+301"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
<message>
<location line="+4"/>
<source>FEP</source>
- <translation>FEP</translation>
+ <translation></translation>
</message>
<message>
<location line="+23"/>
<source>XIM input method</source>
- <translation>XIM beviteli eljárás</translation>
+ <translation>XIM beviteli mód</translation>
</message>
<message>
<location line="+4"/>
<source>Windows input method</source>
- <translation>Windows beviteli eljárás</translation>
+ <translation>Windows beviteli mód</translation>
</message>
<message>
<location line="+4"/>
<source>Mac OS X input method</source>
- <translation>Mac OS X beviteli eljárás</translation>
+ <translation>Mac OS X beviteli mód</translation>
</message>
<message>
<location line="+4"/>
<source>S60 FEP input method</source>
- <translation>S60 FEP beviteli eljárás</translation>
+ <translation>S60 FEP beviteli mód</translation>
</message>
</context>
<context>
@@ -2710,35 +4405,47 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
- <translation>Egy értél bevitele:</translation>
+ <translation>Írjon be egy értéket:</translation>
</message>
</context>
<context>
<name>QLibrary</name>
<message>
+ <source>QLibrary::load_sys: Cannot load %1 (%2)</source>
+ <translation type="obsolete">QLibrary::load_sys: %1 nem tölthető be (%2)</translation>
+ </message>
+ <message>
+ <source>QLibrary::unload_sys: Cannot unload %1 (%2)</source>
+ <translation type="obsolete">QLibrary::load_sys: %1 nem távolítható el (%2)</translation>
+ </message>
+ <message>
+ <source>QLibrary::resolve_sys: Symbol &quot;%1&quot; undefined in %2 (%3)</source>
+ <translation type="obsolete">QLibrary::load_sys: &quot;%1&quot; szimbólum nem definiált ebben: %2 (%3)</translation>
+ </message>
+ <message>
<location filename="../src/corelib/plugin/qlibrary.cpp" line="+383"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
- <translation>Nem sikerült az mmap &apos;%1&apos;: %2</translation>
+ <translation>Nem sikerült mmap-olni a(z) &apos;%1&apos;-t: %2</translation>
</message>
<message>
<location line="+22"/>
<source>Plugin verification data mismatch in &apos;%1&apos;</source>
- <translation>Beépülő modul igazoló adata nem megfelelő a(z) &apos;%1&apos;-ben</translation>
+ <translation>Plugin ellenőrző adat eltérés: &apos;%1&apos;</translation>
</message>
<message>
<location line="+6"/>
<source>Could not unmap &apos;%1&apos;: %2</source>
- <translation>Nem lehet eltávolítani a letérképezést &apos;%1&apos;: %2</translation>
+ <translation>Nem sikerült unmap-olni a(z) &apos;%1&apos;-t: %2</translation>
</message>
<message>
- <location line="+344"/>
+ <location line="+375"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
- <translation>A(z) &apos;%1&apos; beépülő modul inkompatibilis Qt könyvtárat használ. (%2.%3.%4) [%5]</translation>
+ <translation>A(z) &apos;%1&apos; plugin inkompatíbilis Qt függvénykönyvtárat használ. (%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>A(z) &apos;%1&apos; beépülő modul inkompatibilis Qt könyvtárat használ. A várt építési kulcs &apos;%2&apos;, kapott &apos;%3&apos;</translation>
+ <translation>A(z) &apos;%1&apos; plugin inkompatíbilis Qt függvénykönyvtárat használ. A várt build kucs &quot;%2&quot;, a kapott &quot;%3&quot;</translation>
</message>
<message>
<location line="+365"/>
@@ -2746,77 +4453,78 @@ Mégis törölni szeretné?</translation>
<translation>Ismeretlen hiba</translation>
</message>
<message>
- <location line="-402"/>
+ <location line="-540"/>
+ <location line="+138"/>
<location filename="../src/corelib/plugin/qpluginloader.cpp" line="+343"/>
<source>The shared library was not found.</source>
- <translation>A megosztott könyvtár nem található.</translation>
+ <translation>Az osztott függvénykönyvtár nem található.</translation>
</message>
<message>
<location line="+2"/>
<source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
- <translation>A(z) &apos;%1&apos; fájl nem egy érvényes Qt beépülő modul.</translation>
+ <translation>A(z) &apos;%1&apos; fájl nem érvényes Qt plugin.</translation>
</message>
<message>
<location line="+43"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
- <translation>A(z) &apos;%1&apos; beépülő modul inkompatibilis Qt könyvtárat használ. (Nem lehet a debug és kiadási könyvtárakat keverni.)</translation>
+ <translation>A(z) &apos;%1&apos; plugin inkompatíbilis Qt könyvtárat használ. (A debug és a release könyvtárak nem keverhetők.)</translation>
</message>
<message>
<location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+236"/>
<location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+87"/>
<source>Cannot load library %1: %2</source>
- <translation>Nem lehet betölteni a(z) %1 könyvtárat: %2</translation>
+ <translation>A(z) %1 könyvtár nem tölthető be: %2</translation>
</message>
<message>
<location line="+17"/>
<location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+22"/>
<source>Cannot unload library %1: %2</source>
- <translation>Nem lehet kirakni a(z) %1 könyvtárat: %2</translation>
+ <translation>A(z) %1 könyvtár nem távolítható el: %2</translation>
</message>
<message>
<location line="+34"/>
<location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+15"/>
<source>Cannot resolve symbol &quot;%1&quot; in %2: %3</source>
- <translation>Nem lehet megfejteni a(z) &apos;%1&apos; szimbólumot a(z) %2-ben: %3</translation>
+ <translation>A(z) &quot;%1&quot; szimbólum nem oldható fel a(z) %2 könyvtárban: %3</translation>
</message>
</context>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2035"/>
- <source>Select All</source>
- <translation>Az összes kiválasztása</translation>
- </message>
- <message>
- <location line="-32"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2076"/>
<source>&amp;Undo</source>
<translation>&amp;Visszavonás</translation>
</message>
<message>
<location line="+4"/>
<source>&amp;Redo</source>
- <translation>&amp;Helyreállítás</translation>
+ <translation>Új&amp;ra</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+9"/>
<source>Cu&amp;t</source>
<translation>&amp;Kivágás</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+6"/>
<source>&amp;Copy</source>
<translation>&amp;Másolás</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+6"/>
<source>&amp;Paste</source>
<translation>&amp;Beillesztés</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+7"/>
<source>Delete</source>
<translation>Törlés</translation>
</message>
+ <message>
+ <location line="+8"/>
+ <source>Select All</source>
+ <translation>Összes kijelölése</translation>
+ </message>
</context>
<context>
<name>QLocalServer</name>
@@ -2824,22 +4532,22 @@ Mégis törölni szeretné?</translation>
<location filename="../src/network/socket/qlocalserver.cpp" line="+224"/>
<location filename="../src/network/socket/qlocalserver_unix.cpp" line="+246"/>
<source>%1: Name error</source>
- <translation>%1: Név hiba</translation>
+ <translation>%1: Hibás név</translation>
</message>
<message>
<location filename="../src/network/socket/qlocalserver_unix.cpp" line="-8"/>
<source>%1: Permission denied</source>
- <translation>%1: Engedély megtagadva</translation>
+ <translation>%1: hozzáférés megtagadva</translation>
</message>
<message>
<location line="+12"/>
<source>%1: Address in use</source>
- <translation>%1: Cím használatban</translation>
+ <translation>%1: A cím már használatban van</translation>
</message>
<message>
<location line="+5"/>
<source>%1: Unknown error %2</source>
- <translation>%1: Ismeretlen hiba %2</translation>
+ <translation>%1: ismeretlen hiba %2</translation>
</message>
</context>
<context>
@@ -2848,19 +4556,19 @@ Mégis törölni szeretné?</translation>
<location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+139"/>
<source>%1: Connection refused</source>
- <translation>%1: Kapcsolat elutasítva</translation>
+ <translation>%1: A kapcsolat elutasítva</translation>
</message>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Remote closed</source>
- <translation>%1: Távol bezárva</translation>
+ <translation>%1: A szerver lezárta a kapcsolatot</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="+45"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+79"/>
+ <location line="+59"/>
<source>%1: Invalid name</source>
<translation>%1: Érvénytelen név</translation>
</message>
@@ -2868,43 +4576,43 @@ Mégis törölni szeretné?</translation>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Socket access error</source>
- <translation>%1: Socket hozzáférési hiba</translation>
+ <translation>%1: Socket elérési hiba</translation>
</message>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Socket resource error</source>
- <translation>%1: Socket erőforrás hiba</translation>
+ <translation>%1: Socket erőforrás probléma</translation>
</message>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Socket operation timed out</source>
- <translation>%1: Socker művelet időtúllépés</translation>
+ <translation>%1: Időtúllépés a socketen</translation>
</message>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Datagram too large</source>
- <translation>%1: Túl nagy datagram</translation>
+ <translation>%1: A csomag túl nagy</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="-50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-64"/>
<source>%1: Connection error</source>
- <translation>%1: Kapcsolat hiba</translation>
+ <translation>%1: Kapcsolódási hiba</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>%1: A socket művelet nem támogatott</translation>
+ <translation>%1: A kívánt socket művelet nem támogatott</translation>
</message>
<message>
<location line="+4"/>
<source>%1: Unknown error</source>
- <translation>%1: Ismeretlen hiba</translation>
+ <translation>%1: Ismeretlen hiba </translation>
</message>
<message>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+4"/>
@@ -2916,89 +4624,90 @@ Mégis törölni szeretné?</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1261"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1287"/>
<source>Unable to open database &apos;</source>
- <translation>Nem lehet megnyitni az adatbázist</translation>
+ <translation>Az adatbázis nem nyitható meg: &apos;</translation>
</message>
<message>
<location line="+11"/>
<source>Unable to connect</source>
- <translation>Nem lehet kapcsolódni</translation>
+ <translation>Nem sikerült kapcsolódni</translation>
</message>
<message>
- <location line="+151"/>
+ <location line="+150"/>
<source>Unable to begin transaction</source>
- <translation>Nem lehet megkezdeni a tranzakciót</translation>
+ <translation>A tranzakció nem indítható</translation>
</message>
<message>
<location line="+17"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+17"/>
<source>Unable to rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
</message>
</context>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-969"/>
+ <location line="-977"/>
+ <location line="+31"/>
<source>Unable to fetch data</source>
- <translation>Nem lehet letölteni az adatot</translation>
+ <translation>Az adat nem olvasható ki</translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+161"/>
<source>Unable to execute query</source>
- <translation>Nem lehet végrehajtani a lekérdezést</translation>
+ <translation>A lekérdezés nem hajtható végre</translation>
</message>
<message>
<location line="+6"/>
<source>Unable to store result</source>
- <translation>Nem lehet tárolni az eredményt</translation>
+ <translation>Az eredmény nem tárolható</translation>
</message>
<message>
<location line="+191"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
- <translation>Nem lehet felkészülni a műveletre</translation>
+ <translation>A művelet előkészítése nem lehetséges</translation>
</message>
<message>
<location line="+37"/>
<source>Unable to reset statement</source>
- <translation>Nem lehet visszaállítani a műveleteket</translation>
+ <translation>A művelet visszaállítása nem lehetséges</translation>
</message>
<message>
<location line="+86"/>
<source>Unable to bind value</source>
- <translation>Nem lehet összekötni az értéket</translation>
+ <translation>A változó kötése sikertelen</translation>
</message>
<message>
<location line="+11"/>
<source>Unable to execute statement</source>
- <translation>Nem lehet végrehajtani az állítást</translation>
+ <translation>A művelet nem hajtható végre</translation>
</message>
<message>
<location line="+14"/>
<location line="+21"/>
<source>Unable to bind outvalues</source>
- <translation>Nem lehet összekötni a kiértékeléseket</translation>
+ <translation>A kimenő érték kötése sikertelen</translation>
</message>
<message>
<location line="-12"/>
<source>Unable to store statement results</source>
- <translation>Nem lehet letárolni a művelet eredményeket</translation>
+ <translation>A művelet eredményének tárolása sikertelen</translation>
</message>
<message>
<location line="-253"/>
<source>Unable to execute next query</source>
- <translation>Nem lehet végrehajtani a következő lekérdezést</translation>
+ <translation>A következő lekérdezés nem hajtható végre</translation>
</message>
<message>
<location line="+10"/>
<source>Unable to store next result</source>
- <translation>Nem lehet letárolni a következő eredményt</translation>
+ <translation>A következő eredmény nem tárolható</translation>
</message>
</context>
<context>
@@ -3006,7 +4715,7 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
- <translation>(Címtelen)</translation>
+ <translation>(Névtelen)</translation>
</message>
</context>
<context>
@@ -3024,22 +4733,22 @@ Mégis törölni szeretné?</translation>
<message>
<location line="-18"/>
<source>Minimize</source>
- <translation>Minimalizálás</translation>
+ <translation>Kis méret</translation>
</message>
<message>
<location line="+13"/>
<source>Restore Down</source>
- <translation>Leállítás</translation>
+ <translation>Előző méret</translation>
</message>
<message>
<location line="+707"/>
<source>&amp;Restore</source>
- <translation>&amp;Letárolás</translation>
+ <translation>&amp;Visszaállítás</translation>
</message>
<message>
<location line="+3"/>
<source>&amp;Move</source>
- <translation>&amp;Mozgatás</translation>
+ <translation>Á&amp;thelyezés</translation>
</message>
<message>
<location line="+1"/>
@@ -3049,17 +4758,17 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+1"/>
<source>Mi&amp;nimize</source>
- <translation>&amp;Minimalizálás</translation>
+ <translation>&amp;Kis méret</translation>
</message>
<message>
<location line="+2"/>
<source>Ma&amp;ximize</source>
- <translation>Ma&amp;ximalizálás</translation>
+ <translation>Te&amp;ljes méret</translation>
</message>
<message>
<location line="+2"/>
<source>Stay on &amp;Top</source>
- <translation>&amp;Tetején maradni</translation>
+ <translation>Mindig leg&amp;felül</translation>
</message>
<message>
<location line="+3"/>
@@ -3067,19 +4776,24 @@ Mégis törölni szeretné?</translation>
<translation>&amp;Bezárás</translation>
</message>
<message>
- <location line="-729"/>
+ <location line="-787"/>
+ <source>- [%1]</source>
+ <translation>- [%1]</translation>
+ </message>
+ <message>
+ <location line="+58"/>
<source>Maximize</source>
- <translation>Maximalizálás</translation>
+ <translation>Teljes méret</translation>
</message>
<message>
<location line="+3"/>
<source>Unshade</source>
- <translation>Árnyékolás megszüntetése</translation>
+ <translation>Legördítés</translation>
</message>
<message>
<location line="+3"/>
<source>Shade</source>
- <translation>Árnyákolás</translation>
+ <translation>Felgördítés</translation>
</message>
<message>
<location line="+6"/>
@@ -3096,10 +4810,31 @@ Mégis törölni szeretné?</translation>
<source>Menu</source>
<translation>Menü</translation>
</message>
+</context>
+<context>
+ <name>QMediaPlayer</name>
+ <message>
+ <source>The QMediaPlayer object does not have a valid service</source>
+ <translation type="obsolete">A QMediaPlayer objektumnak nincs érvényes szolgáltatása</translation>
+ </message>
+</context>
+<context>
+ <name>QMediaPlaylist</name>
+ <message>
+ <source>Could not add items to read only playlist.</source>
+ <translation type="obsolete">Csak olvasható lejátszólistához nem lehet elemeket hozzáadni.</translation>
+ </message>
<message>
- <location line="-79"/>
- <source>- [%1]</source>
- <translation>- [%1]</translation>
+ <source>Playlist format is not supported</source>
+ <translation type="obsolete">A lejátszólista formátuma nem támogatott</translation>
+ </message>
+ <message>
+ <source>The file could not be accessed.</source>
+ <translation type="obsolete">A fájl nem elérhető.</translation>
+ </message>
+ <message>
+ <source>Playlist format is not supported.</source>
+ <translation type="obsolete">A lejátszólista formátuma nem támogatott.</translation>
</message>
</context>
<context>
@@ -3127,15 +4862,68 @@ Mégis törölni szeretné?</translation>
<context>
<name>QMenuBar</name>
<message>
- <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+410"/>
+ <source>About</source>
+ <translation type="obsolete">Névjegy</translation>
+ </message>
+ <message>
+ <source>Config</source>
+ <translation type="obsolete">Konfiguráció</translation>
+ </message>
+ <message>
+ <source>Preference</source>
+ <translation type="obsolete">Beállítások</translation>
+ </message>
+ <message>
+ <source>Options</source>
+ <translation type="obsolete">Opciók</translation>
+ </message>
+ <message>
+ <source>Setting</source>
+ <translation type="obsolete">Beállítás</translation>
+ </message>
+ <message>
+ <source>Setup</source>
+ <translation type="obsolete">Beállítás</translation>
+ </message>
+ <message>
+ <source>Quit</source>
+ <translation type="obsolete">Kilépés</translation>
+ </message>
+ <message>
+ <source>Exit</source>
+ <translation type="obsolete">Kilépés</translation>
+ </message>
+ <message>
+ <source>About %1</source>
+ <translation type="obsolete">%1 névjegye</translation>
+ </message>
+ <message>
+ <source>About Qt</source>
+ <translation type="obsolete">A Qt névjegye</translation>
+ </message>
+ <message>
+ <source>Preferences</source>
+ <translation type="obsolete">Beállítások</translation>
+ </message>
+ <message>
+ <source>Quit %1</source>
+ <translation type="obsolete">Kilépés: %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+456"/>
<source>Actions</source>
- <translation>Tevékenységek</translation>
+ <translation>Műveletek</translation>
</message>
</context>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1116"/>
+ <source>Help</source>
+ <translation>Súgó</translation>
+ </message>
+ <message>
+ <location line="-848"/>
<location line="+847"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -3143,42 +4931,83 @@ Mégis törölni szeretné?</translation>
<translation>OK</translation>
</message>
<message>
- <location line="+477"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;Qt-ról&lt;/h3&gt;&lt;p&gt;Ez a program a(z) %1 Qt verziót használja.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;p&gt;A Qt egy C++ eszközkészlet keresztplatformos alkalmazások fejlesztéséhez, mely egyetlen, MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, és minden főbb kereskedelmi Unix változat között hordozható forrást ad; valamint elérhető még beágyazott eszközökhöz is, mint Qt beágyazott Linuxhoz és Qt Windows CE-hez.&lt;/p&gt;
+&lt;p&gt;A Qt három különböző licensz alatt érhető el, hogy illeszkedjen a különbőző felhasználói igényekhez:
+&lt;p&gt;A kereskedelmi licenszünk alkalmas saját/kereskedelmi szoftver fejlesztéséhez, ha nem akarja megosztani a forráskódot harmadik partnerrel vagy nem kívánja teljesíteni GNU LGPL v2.1 vagy GNU GPL v3.0 feltételeit.&lt;/p&gt;
+&lt;p&gt;A GNU LGPL v2.1 alá tartozó Qt licensz alkalmas Qt-n alapuló programok fejlesztéséhez (zárt vagy nyílt forrású), amennyiben betartja a GNU LGPL v2.1 kikötéseit és feltételeit.&lt;/p&gt;
+&lt;p&gt;A GNU General Public License v3.0 alá tartozó Qt licensz pedig alkalmas Qt-n alapuló programok fejlesztésére, ahol olyan programok kombinációját kívánja használni, melyek megfelelnek a GNU GPL version 3.0 feltételeinek vagy ahol hajlandó teljesíteni a GNU GPL v3.0 feltételeit.&lt;/p&gt;
+&lt;p&gt;Tekintse át a &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; oldalon a Qt licenszeit.&lt;/p&gt;
+&lt;p&gt;Copyright (C) 2009 Nokia Corporation és/vagy annak leányvállalat(-ai).&lt;/p&gt;
+&lt;p&gt;A Qt a Nokia terméke. További információért látogassa meg a &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; honlapot.&lt;/p&gt;</translation>
</message>
<message>
- <location line="+5"/>
- <source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation></translation>
+ <location line="+513"/>
+ <source>About Qt</source>
+ <translation>A Qt névjegye</translation>
</message>
<message>
- <location line="+31"/>
- <source>About Qt</source>
- <translation>Qt-ról</translation>
+ <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;p&gt;A program a Qt %1 verzióját használja.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-512"/>
- <source>Help</source>
- <translation>Súgó</translation>
+ <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://www.trolltech.com/qt/&quot;&gt;www.trolltech.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;h3&gt;A Qt névjegye&lt;/h3&gt;%1&lt;p&gt;A Qt egy C++ eszközkészlet a kereszt-platformos alkalmazásfejlesztéshez.&lt;/p&gt;&lt;p&gt;A Qt egy-forrású hordozhatóságot biztosít az MS&amp;nbsp;Windows, a Mac&amp;nbsp;OS&amp;nbsp;X, a Linux, és az összes nagyobb kereskedelmi Unix változat között. A Qt mobileszközökhöz is elérhető, pl. Qtopia Core.&lt;/p&gt;&lt;p&gt;A Qt a Trolltech terméke. További információk: &lt;a href=&quot;http://www.trolltech.com/qt/&quot;&gt;www.trolltech.com/qt/&lt;/a&gt; .&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1099"/>
+ <location line="-1641"/>
<source>Show Details...</source>
<translation>Részletek megjelenítése...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+0"/>
<source>Hide Details...</source>
<translation>Részletek elrejtése...</translation>
</message>
+ <message>
+ <location line="+1605"/>
+ <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+ <translation>&lt;h3&gt;Qt névjegye&lt;/h3&gt;&lt;p&gt;Ez a program a Qt %1 verzióját használja.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;A Qt egy C++ eszközkészlet keresztplatformos alkalmazások fejlesztéséhez, mely egyetlen, MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, és minden főbb kereskedelmi Unix változat között hordozható forrást ad; valamint elérhető még beágyazott eszközökhöz is, mint Qt beágyazott Linuxhoz és Qt Windows CE-hez.&lt;/p&gt;
+&lt;p&gt;A Qt három különböző licensz alatt érhető el, hogy illeszkedjen a különbőző felhasználói igényekhez:
+&lt;p&gt;A kereskedelmi licenszünk alkalmas saját/kereskedelmi szoftver fejlesztéséhez, ha nem akarja megosztani a forráskódot harmadik partnerrel vagy nem kívánja teljesíteni GNU LGPL v2.1 vagy GNU GPL v3.0 feltételeit.&lt;/p&gt;
+&lt;p&gt;A GNU LGPL v2.1 alá tartozó Qt licensz alkalmas Qt-n alapuló programok fejlesztéséhez (zárt vagy nyílt forrású), amennyiben betartja a GNU LGPL v2.1 kikötéseit és feltételeit.&lt;/p&gt;
+&lt;p&gt;A GNU General Public License v3.0 alá tartozó Qt licensz pedig alkalmas Qt-n alapuló programok fejlesztésére, ahol olyan programok kombinációját kívánja használni, melyek megfelelnek a GNU GPL version 3.0 feltételeinek vagy ahol hajlandó teljesíteni a GNU GPL v3.0 feltételeit.&lt;/p&gt;
+&lt;p&gt;Tekintse át a &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; oldalon a Qt licenszeit.&lt;/p&gt;
+&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;
+&lt;p&gt;A Qt a Nokia terméke. További információért látogassa meg a &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; honlapot.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://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>
+ <translatorcomment>Needing review, but basically accepted string.</translatorcomment>
+ <translation type="obsolete">&lt;p&gt;A Qt egy C++ eszközkészlet keresztplatformos alkalmazások fejlesztéséhez, mely egyetlen, MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, és minden főbb kereskedelmi Unix változat között hordozható forrást ad; valamint elérhető még beágyazott eszközökhöz is, mint Qt beágyazott Linuxhoz és Qt Windows CE-hez.&lt;/p&gt;
+&lt;p&gt;A Qt három különböző licensz alatt érhető el, hogy illeszkedjen a különbőző felhasználói igényekhez:
+&lt;p&gt;A kereskedelmi licenszünk alkalmas saját/kereskedelmi szoftver fejlesztéséhez, ha nem akarja megosztani a forráskódot harmadik partnerrel vagy nem kívánja teljesíteni GNU LGPL v2.1 vagy GNU GPL v3.0 feltételeit.&lt;/p&gt;
+&lt;p&gt;A GNU LGPL v2.1 alá tartozó Qt licensz alkalmas Qt-n alapuló programok fejlesztéséhez (zárt vagy nyílt forrású), amennyiben betartja a GNU LGPL v2.1 kikötéseit és feltételeit.&lt;/p&gt;
+&lt;p&gt;A GNU General Public License v3.0 alá tartozó Qt licensz pedig alkalmas Qt-n alapuló programok fejlesztésére, ahol olyan programok kombinációját kívánja használni, melyek megfelelnek a GNU GPL version 3.0 feltételeinek vagy ahol hajlandó teljesíteni a GNU GPL v3.0 feltételeit.&lt;/p&gt;
+&lt;p&gt;Tekintse át a &lt;a href=&quot;http://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.com/products/licensing&lt;/a&gt; oldalon a Qt licenszeit.&lt;/p&gt;
+&lt;p&gt;Copyright (C) 2009 Nokia Corporation és/vagy annak leányvállalat(-ai).&lt;/p&gt;
+&lt;p&gt;A Qt a Nokia terméke. További információért látogassa meg a &lt;a href=&quot;http://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; honlapot.&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://www.trolltech.com/company/model/&quot;&gt;www.trolltech.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;p&gt;A programa Qt Open Source Edition %1 verziót használja.&lt;/p&gt;&lt;p&gt;A Qt Open Source Edition az Open Source (nyílt forrású) alkalmazások fejlesztéséhez készült. Zárt forrású alkalmazások fejlesztéséhez a kereskedelmi Qt licenszre van szükség.&lt;/p&gt;&lt;p&gt;A Qt licenszeléséről további információ a &lt;a href=&quot;http://www.trolltech.com/company/model/&quot;&gt;www.trolltech.com/company/model/&lt;/a&gt; oldalon található.&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://www.trolltech.com/qt/&quot;&gt;www.trolltech.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;h3&gt;A Qt névjegye&lt;/h3&gt;%1&lt;p&gt;A Qt egy átfogó C++ környezet keresztplatformos alkalmazások fejlesztéséhez.&lt;/p&gt;&lt;p&gt;A Qt kódhordozhatóságot biztosít MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, és a legtöbb kereskedelmi Unix-variáns között. A Qt Embedded lehetővá teszi a Qt-t beágyazott eszközön való használatát.&lt;/p&gt;&lt;p&gt;A Qt a Trolltech cég terméke. További információkért tekintse meg a &lt;a href=&quot;http://www.trolltech.com/qt/&quot;&gt;www.trolltech.com/qt/&lt;/a&gt; oldalt.&lt;/p&gt;</translation>
+ </message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
<location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
- <translation>IM kiválasztása</translation>
+ <translation>Beviteli mód kiválasztása</translation>
</message>
</context>
<context>
@@ -3186,30 +5015,30 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
- <translation>Összetett beviteli eljárás kapcsoló</translation>
+ <translation>Beviteli mód választó</translation>
</message>
<message>
<location line="+7"/>
<source>Multiple input method switcher that uses the context menu of the text widgets</source>
- <translation>Összetett beviteli eljárás kapcsoló, ami a szöveg widgetek menü összefüggéseit használja</translation>
+ <translation>A szöveg elemeken megjelenítendő felbukkanó beviteli mód választó</translation>
</message>
</context>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+209"/>
<source>The remote host closed the connection</source>
- <translation>A távoli hoszt bezárta a kapcsolatot</translation>
+ <translation>A távoli kiszolgáló bezárta a kapcsolatot</translation>
</message>
<message>
<location line="+3"/>
<source>Network operation timed out</source>
- <translation>Hálózati művelet időtúllépése</translation>
+ <translation>Időtúllépés hálózati művelet során</translation>
</message>
<message>
<location line="+3"/>
<source>Out of resources</source>
- <translation>Kifogytak az erőforrások</translation>
+ <translation>Az erőforrások elfogytak</translation>
</message>
<message>
<location line="+3"/>
@@ -3219,7 +5048,7 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Protocol type not supported</source>
- <translation>Nem támogatott protokoll típus</translation>
+ <translation>Nem támogatott protokoll</translation>
</message>
<message>
<location line="+3"/>
@@ -3229,27 +5058,27 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+6"/>
<source>Network unreachable</source>
- <translation>A hálózat nem elérhető</translation>
+ <translation>A hálózat nem érhető el</translation>
</message>
<message>
<location line="+3"/>
<source>Permission denied</source>
- <translation>Engedély megtagadva</translation>
+ <translation>Hozzáférés megtagadva</translation>
</message>
<message>
<location line="+3"/>
<source>Connection timed out</source>
- <translation>Kapcsolat időtúllépés</translation>
+ <translation>A kapcsolat várakozási ideje lejárt</translation>
</message>
<message>
<location line="+3"/>
<source>Connection refused</source>
- <translation>Kapcsolat elutasítva</translation>
+ <translation>A kapcsolat elutasítva</translation>
</message>
<message>
<location line="+3"/>
<source>The bound address is already in use</source>
- <translation>A cím összeköttetés már használatban van</translation>
+ <translation>A lefoglalandó cím használatban van</translation>
</message>
<message>
<location line="+3"/>
@@ -3264,17 +5093,17 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+6"/>
<source>Unable to send a message</source>
- <translation>Nem lehet üzenetet küldeni</translation>
+ <translation>Nem küldhető üzenet</translation>
</message>
<message>
<location line="+3"/>
<source>Unable to receive a message</source>
- <translation>Nem lehet megkapni az üzeneteket</translation>
+ <translation>Nem fogadható üzenet</translation>
</message>
<message>
<location line="+3"/>
<source>Unable to write</source>
- <translation>Nem lehet írni</translation>
+ <translation>Nem írható</translation>
</message>
<message>
<location line="+3"/>
@@ -3284,37 +5113,37 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+3"/>
<source>Another socket is already listening on the same port</source>
- <translation>Egy másik socker már ugyanazon a porton figyel</translation>
+ <translation>Egy másik socket már figyel ezen a porton</translation>
</message>
<message>
<location line="-66"/>
<source>Unable to initialize non-blocking socket</source>
- <translation>Nem lehet inicializálni egy nem blokkoló socketet</translation>
+ <translation>A nem-blokkolo socket előkészítése sikertelen</translation>
</message>
<message>
<location line="+3"/>
<source>Unable to initialize broadcast socket</source>
- <translation>Nem lehet inicializálni a socket közvetítőt</translation>
+ <translation>A broadcast socket előkészítése sikertelen</translation>
</message>
<message>
<location line="+3"/>
<source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
- <translation>IPv6 socket használatának kipróbálása olyan platformon, amelyik nem támogatja az IPv6-t</translation>
+ <translation>IPv6 socket használatának kísérlete IPv6 támogatás nélküli platformon</translation>
</message>
<message>
<location line="+21"/>
<source>Host unreachable</source>
- <translation>A hoszt nem elérhető</translation>
+ <translation>A kiszolgáló nem érhető el</translation>
</message>
<message>
<location line="+24"/>
<source>Datagram was too large to send</source>
- <translation>A datagram túl nagy volt elküldésre</translation>
+ <translation>A csomag mérete miatt nem küldhető el</translation>
</message>
<message>
<location line="+18"/>
<source>Operation on non-socket</source>
- <translation>Nem socketen végzett művelet</translation>
+ <translation>Socket művelet érvénytelen eszközön</translation>
</message>
<message>
<location line="+6"/>
@@ -3324,7 +5153,7 @@ Mégis törölni szeretné?</translation>
<message>
<location line="-3"/>
<source>The proxy type is invalid for this operation</source>
- <translation>A proxy típusa ismeretlen erre a műveletre</translation>
+ <translation>A proxy típusa nem megfelelő a művelethez</translation>
</message>
</context>
<context>
@@ -3332,7 +5161,20 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+66"/>
<source>Error opening %1</source>
- <translation>Hiba történt a(z) %1 megnyitása közben</translation>
+ <translation>Hiba %1 megnyitásakor</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessDataBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+76"/>
+ <source>Operation not supported on %1</source>
+ <translation>A művelett nem támogatott a(z) %1-n</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Invalid URI: %1</source>
+ <translation>Érvénytelen cím: %1</translation>
</message>
</context>
<context>
@@ -3340,38 +5182,48 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+195"/>
<source>Write error writing to %1: %2</source>
- <translation>Írása hiba történt a(z) %1-be történő írás közben: %2</translation>
+ <translation>Hiba a(z) %1 kiírásakor: %2</translation>
+ </message>
+ <message>
+ <location line="+60"/>
+ <source>Socket error on %1: %2</source>
+ <translation>Socket hiba a(z) %1-n: %2</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Remote host closed the connection prematurely on %1</source>
+ <translation>A(z) %1 gép idő előtt megszakította a kapcsolatot</translation>
</message>
</context>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qfilenetworkreply.cpp" line="+83"/>
+ <location filename="../src/network/access/qfilenetworkreply.cpp" line="+85"/>
<location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+100"/>
<source>Request for opening non-local file %1</source>
- <translation>Kérés a(z) %1 nem helyi fál megnyitására</translation>
+ <translation>Nem helyi fájl megnyitásának kísérlete: %1</translation>
</message>
<message>
- <location line="+31"/>
+ <location line="+33"/>
<location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+45"/>
<source>Error opening %1: %2</source>
- <translation>Hiba történt a(z) %1 megnyitása közben: %2</translation>
+ <translation>Hiba a(z) %1 megnyitásakor: %2</translation>
</message>
<message>
<location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+38"/>
<source>Write error writing to %1: %2</source>
- <translation>Írási hiba történt a(z) %1-be írás közben: %2</translation>
+ <translation>Hiba a(z) %1 kiírásakor: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qfilenetworkreply.cpp" line="-11"/>
+ <location filename="../src/network/access/qfilenetworkreply.cpp" line="-13"/>
<location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+48"/>
<source>Cannot open %1: Path is a directory</source>
- <translation>Nem lehet megnyitni a(z) %1-t: az útvonal egy könyvtár</translation>
+ <translation>Sikertelen megnyitás: %1 egy könyvtár</translation>
</message>
<message>
<location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+21"/>
<source>Read error reading from %1: %2</source>
- <translation>Olvasási hiba történt a(z) %1-ból való olvasás közben: %2</translation>
+ <translation>Hiba a(z) %1 olvasása közben: %2</translation>
</message>
</context>
<context>
@@ -3379,86 +5231,161 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+131"/>
<source>No suitable proxy found</source>
- <translation>Nem található megfelelő proxy</translation>
+ <translation>Nincs megfelelő proxy</translation>
</message>
<message>
<location line="+14"/>
<source>Cannot open %1: is a directory</source>
- <translation>Nem lehet megnyitni a(z) %1 t, mert az egy könyvtár</translation>
+ <translation>Sikertelen megnyitás: %1 egy könyvtár</translation>
</message>
<message>
<location line="+112"/>
<source>Logging in to %1 failed: authentication required</source>
- <translation>A(z) %1-be történő loggolás nem sikerült: hitelesítés szükséges</translation>
+ <translation>A bejelentkezés sikertelen ide: %1, hitelesítés szükséges</translation>
</message>
<message>
<location line="+39"/>
<source>Error while downloading %1: %2</source>
- <translation>Hiba történt a(z) %1 letöltése közben: %2</translation>
+ <translation>Hiba a(z) %1 letöltésekor: %2</translation>
</message>
<message>
<location line="+2"/>
<source>Error while uploading %1: %2</source>
- <translation>Hiba történt a(z) %1 feltöltése közben: %2</translation>
+ <translation>Hiba a(z) %1 feltöltésekor: %2</translation>
</message>
</context>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+585"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+652"/>
<source>No suitable proxy found</source>
- <translation>Nem található megfelelő proxy</translation>
+ <translation>Nincs megfelelő proxy</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessManager</name>
+ <message>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+942"/>
+ <source>Network access is disabled.</source>
+ <translation>A hozzáférés a hálózathoz le van tiltva.</translation>
</message>
</context>
<context>
<name>QNetworkReply</name>
<message>
- <location line="+95"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+100"/>
<source>Error downloading %1 - server replied: %2</source>
- <translation>Hiba történt a(z) %1 letöltése közben - a szerver válasza: %2</translation>
+ <translation>Hiba %1 letöltésekor - a szerver válasza: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+77"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="-860"/>
<source>Protocol &quot;%1&quot; is unknown</source>
- <translation>A(z) &apos;%1&apos; protokoll ismeretlen</translation>
+ <translation>Ismeretlen protokoll: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+192"/>
+ <source>Network session error.</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Hálozati munkamenet hiba.</translation>
+ </message>
+ <message>
+ <location line="+352"/>
+ <source>Temporary network failure.</source>
+ <translation>Ideiglenes hálózati hiba.</translation>
</message>
</context>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+519"/>
+ <location line="+120"/>
<location line="+28"/>
<source>Operation canceled</source>
- <translation>Művelet visszavonása</translation>
+ <translation>A művelet megszakítva</translation>
</message>
</context>
<context>
- <name>QOCIDriver</name>
+ <name>QNetworkSession</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2083"/>
- <source>Unable to logon</source>
- <translation>Nem lehet bejelentkezni</translation>
+ <location filename="../src/network/bearer/qnetworksession.cpp" line="+449"/>
+ <source>Invalid configuration.</source>
+ <translation>Érvénytelen konfiguráció.</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkSessionPrivateImpl</name>
+ <message>
+ <location filename="../src/plugins/bearer/icd/qnetworksession_impl.cpp" line="+1005"/>
+ <source>Roaming error</source>
+ <translation>Roaming hiba</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Session aborted by user or system</source>
+ <translation>A munkamenetet a felhasználó vagy a rendszer megszakította</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Unidentified Error</source>
+ <translation>Azonosítatlan hiba</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/bearer/qnetworksession_impl.cpp" line="+272"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+271"/>
+ <source>Unknown session error.</source>
+ <translation>Ismeretlen hiba a munkamenetben.</translation>
</message>
<message>
- <location line="-144"/>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The session was aborted by the user or system.</source>
+ <translation>A munkamenetet a felhasználó vagy a rendszer megszakította.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The requested operation is not supported by the system.</source>
+ <translation>A kért műveletet a rendszer nem támogatja.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The specified configuration cannot be used.</source>
+ <translation>A megadott konfiguráció nem használható.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>Roaming was aborted or is not possible.</source>
+ <translation>A roaming megszakadt, vagy nem lehetséges.</translation>
+ </message>
+</context>
+<context>
+ <name>QOCIDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+1944"/>
<source>Unable to initialize</source>
<comment>QOCIDriver</comment>
- <translation>Nem lehet inicializálni</translation>
+ <translation>Az inicializálás nem lehetséges</translation>
</message>
<message>
- <location line="+215"/>
+ <location line="+144"/>
+ <source>Unable to logon</source>
+ <translation>A bejelentkezés nem lehetséges</translation>
+ </message>
+ <message>
+ <location line="+71"/>
<source>Unable to begin transaction</source>
- <translation>Nem lehet megkezdeni a tranzakciót</translation>
+ <translation>A tranzakció nem indítható</translation>
</message>
<message>
<location line="+19"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+19"/>
<source>Unable to rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
</message>
</context>
<context>
@@ -3468,167 +5395,198 @@ Mégis törölni szeretné?</translation>
<location line="+168"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
- <translation>Nem lehet összekötni az oszlopot köteg végrehajtásra</translation>
+ <translation>Az oszlop kötegelt végrehajtáshoz kötése sikertelen</translation>
</message>
<message>
<location line="+15"/>
<source>Unable to execute batch statement</source>
- <translation>Nem lehet végrehajtani a köteg állítást</translation>
- </message>
- <message>
- <location line="+304"/>
- <source>Unable to goto next</source>
- <translation>Nem lehet a következőre ugrani</translation>
+ <translation>A kötegelt utasítások végrehajtása sikertelen</translation>
</message>
<message>
- <location line="+59"/>
+ <location line="+363"/>
<source>Unable to alloc statement</source>
- <translation>Nem lehet helyet lefoglalni az állításnak</translation>
+ <translation>Az utasítás lefoglalása sikertelen</translation>
</message>
<message>
<location line="+15"/>
<source>Unable to prepare statement</source>
- <translation>Nem lehet felkészülni a műveletre</translation>
+ <translation>Az utasítás előkészítése sikertelen</translation>
</message>
<message>
<location line="+26"/>
<source>Unable to get statement type</source>
- <translation>Nem lehet megszerezni az állítás típusát</translation>
+ <translation>Az utasítás típusa nem ismert</translation>
</message>
<message>
<location line="+20"/>
<source>Unable to bind value</source>
- <translation>Nem lehet összekötni az értéket</translation>
+ <translation>A változó kötése sikertelen</translation>
</message>
<message>
<location line="+19"/>
<source>Unable to execute statement</source>
- <translation>Nem lehet végrehajtani az állítást</translation>
+ <translation>Az utasítás nem végrehajtható</translation>
+ </message>
+ <message>
+ <location line="-139"/>
+ <source>Unable to goto next</source>
+ <translation>Nem lehet a következőre lépni</translation>
</message>
</context>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1790"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1888"/>
<source>Unable to connect</source>
- <translation>Nem lehet kapcsolódni</translation>
+ <translation>Nem sikerült kapcsolódni</translation>
</message>
<message>
- <location line="+238"/>
+ <location line="+269"/>
<source>Unable to disable autocommit</source>
- <translation>Nem lehet letiltani az automatikus kommitolást</translation>
+ <translation>Az automatikus véglegesítés nem tiltható le</translation>
</message>
<message>
<location line="+17"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+17"/>
<source>Unable to rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
</message>
<message>
<location line="+15"/>
<source>Unable to enable autocommit</source>
- <translation>Nem lehet engedélyezni az automatikus kommitolást</translation>
+ <translation>Az automatikus véglegesítés nem engedélyezhető</translation>
</message>
<message>
- <location line="-281"/>
+ <location line="-312"/>
<source>Unable to connect - Driver doesn&apos;t support all functionality required</source>
- <translation>Nem lehet csatlakozni- A vezérlő nem támogatja az összes szükséges funkciót</translation>
+ <translation>Nem sikerült kapcsolódni - A driver nem támogat minden szükséges szolgáltatást</translation>
</message>
</context>
<context>
<name>QODBCResult</name>
<message>
- <location line="-932"/>
- <location line="+346"/>
+ <location line="-941"/>
+ <location line="+351"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
- <translation>QODBCEredmény::Visszaállítás: Nen lehet beállítani az &apos;SQL_CURSOR_STATIC&apos; állítás attribútumra. Kérem ellenőrizze le az ODBC vezérlő konfigurációt</translation>
+ <translation>QODBCResult::reset: Nem lehet a &apos;SQL_CURSOR_STATIC&apos; attribútumot beállítani a parancson. Ellenőrizze az ODBC driver beállítását</translation>
</message>
<message>
- <location line="-329"/>
- <location line="+623"/>
+ <location line="-334"/>
+ <location line="+627"/>
<source>Unable to execute statement</source>
- <translation>Nem lehet végrehajtani az állítást</translation>
+ <translation>A parancs nem hajtható végre</translation>
</message>
<message>
- <location line="-547"/>
+ <location line="-546"/>
<source>Unable to fetch next</source>
- <translation>Nem lehet letölteni a következőt</translation>
+ <translation>A következő nem olvasható ki</translation>
</message>
<message>
<location line="+271"/>
<source>Unable to prepare statement</source>
- <translation>Nem lehet felkészülni az állításra</translation>
+ <translation>A parancs előkészítése nem lehetséges</translation>
</message>
<message>
- <location line="+268"/>
+ <location line="+267"/>
<source>Unable to bind variable</source>
- <translation>Nem lehet összekötni a változót</translation>
+ <translation>A változó nem rögzíthető</translation>
</message>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+190"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-467"/>
- <location line="+576"/>
- <source>Unable to fetch last</source>
- <translation>Nem lehet letölteni az utolsót</translation>
- </message>
- <message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-670"/>
+ <location line="-560"/>
<source>Unable to fetch</source>
- <translation>Nem lehet letölteni</translation>
+ <translation>Az eredmény nem elérhető</translation>
</message>
<message>
<location line="+44"/>
<source>Unable to fetch first</source>
- <translation>Nem letölteni az elsőt</translation>
+ <translation>Az első eredmény nem érhető el</translation>
</message>
<message>
<location line="+19"/>
<source>Unable to fetch previous</source>
- <translation>Nem lehet letölteni az előzőt</translation>
+ <translation>Az előző eredmény nem érhető el</translation>
+ </message>
+ <message>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+189"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+31"/>
+ <location line="+578"/>
+ <source>Unable to fetch last</source>
+ <translation>Az utolsó eredmény nem érhető el</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="-97"/>
<source>Invalid hostname</source>
- <translation>Érvénytelen hoszt név</translation>
+ <translation type="obsolete">Érvénytelen gépnév</translation>
+ </message>
+ <message>
+ <source>Home</source>
+ <translation type="obsolete">Saját könyvtár</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
- <translation>A művelet nem támogatott a(z) %1-n</translation>
+ <translation type="obsolete">A művelett nem támogatott a(z) %1-n</translation>
</message>
<message>
- <location line="+57"/>
<source>Invalid URI: %1</source>
- <translation>Érvénytelen URI: %1</translation>
+ <translation type="obsolete">Érvénytelen cím: %1</translation>
+ </message>
+ <message>
+ <source>Write error writing to %1: %2</source>
+ <translation type="obsolete">Hiba a(z) %1 kiírásakor: %2</translation>
+ </message>
+ <message>
+ <source>Read error reading from %1: %2</source>
+ <translation type="obsolete">Hiba a(z) %1 olvasása közben: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+60"/>
<source>Socket error on %1: %2</source>
- <translation>Socket hiba a(z) %1-n: %2</translation>
+ <translation type="obsolete">Socket hiba a(z) %1-n: %2</translation>
</message>
<message>
- <location line="+15"/>
<source>Remote host closed the connection prematurely on %1</source>
- <translation>A távoli hoszt túl korán bezárta a kapcsolatot a(z) %1-n</translation>
+ <translation type="obsolete">A(z) %1 gép idő előtt megszakította a kapcsolatot</translation>
+ </message>
+ <message>
+ <source>Protocol error: packet of size 0 received</source>
+ <translation type="obsolete">Protokoll hiba: 0 méretű csomag érkezett</translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+175"/>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+0"/>
<source>No host name given</source>
- <translation>Nincs hoszt név megadva</translation>
+ <translation type="obsolete">Nem adott meg gépnevet</translation>
+ </message>
+ <message>
+ <source>Exit</source>
+ <translation type="obsolete">Kilépés</translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="-241"/>
+ <source>&quot;%1&quot; duplicates a previous role name and will be disabled.</source>
+ <translatorcomment>CHECKIT: role == ?</translatorcomment>
+ <translation>A(z) &quot;%1&quot; neve ütközik egy, már létező szabály nevével, így le lesz tiltva.</translation>
+ </message>
+ <message>
+ <location line="+515"/>
+ <location line="+4"/>
+ <source>invalid query: &quot;%1&quot;</source>
+ <translation>érvénytelen lekérdezés: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/pulsesupport.cpp" line="+162"/>
+ <location line="+11"/>
+ <source>PulseAudio Sound Server</source>
+ <translation></translation>
</message>
</context>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1197"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1238"/>
<source>Name</source>
<translation>Név</translation>
</message>
@@ -3643,32 +5601,32 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+782"/>
<source>Unable to connect</source>
- <translation>Nem lehet csatlakozni</translation>
+ <translation>Nem sikerült kapcsolódni</translation>
</message>
<message>
<location line="+49"/>
<source>Could not begin transaction</source>
- <translation>Nem sikerült megkezdeni a tranzakciót</translation>
+ <translation>A tranzakció nem indítható</translation>
</message>
<message>
<location line="+30"/>
<source>Could not commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+16"/>
<source>Could not rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
</message>
<message>
<location line="+374"/>
<source>Unable to subscribe</source>
- <translation>Nem lehet feliratkozni</translation>
+ <translation>A feliratkozás sikertelen</translation>
</message>
<message>
<location line="+32"/>
<source>Unable to unsubscribe</source>
- <translation>Nem lehet leiratkozni</translation>
+ <translation>A leiratkozás sikertelen</translation>
</message>
</context>
<context>
@@ -3676,12 +5634,12 @@ Mégis törölni szeretné?</translation>
<message>
<location line="-1085"/>
<source>Unable to create query</source>
- <translation>Nem lehet létrehozni a lekérdezést</translation>
+ <translation>A lekérdezés nem készíthető el</translation>
</message>
<message>
<location line="+372"/>
<source>Unable to prepare statement</source>
- <translation>Nem lehet felkészülni az állításra</translation>
+ <translation>A parancs előkészítése nem lehetséges</translation>
</message>
</context>
<context>
@@ -3699,7 +5657,7 @@ Mégis törölni szeretné?</translation>
<message>
<location line="+0"/>
<source>Inches (in)</source>
- <translation>Incs (in)</translation>
+ <translation>Inch (in)</translation>
</message>
<message>
<location line="+0"/>
@@ -3709,7 +5667,7 @@ Mégis törölni szeretné?</translation>
<message>
<location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
<source>Form</source>
- <translation></translation>
+ <translation>Formátum</translation>
</message>
<message>
<location/>
@@ -3719,7 +5677,7 @@ Mégis törölni szeretné?</translation>
<message>
<location/>
<source>Page size:</source>
- <translation>Lap méret:</translation>
+ <translation>Papírméret:</translation>
</message>
<message>
<location/>
@@ -3734,57 +5692,894 @@ Mégis törölni szeretné?</translation>
<message>
<location/>
<source>Paper source:</source>
- <translation>Papír forrás:</translation>
+ <translation>Papírforrás:</translation>
</message>
<message>
<location/>
<source>Orientation</source>
- <translation>Elhelyezkedés</translation>
+ <translation>Orientáció</translation>
</message>
<message>
<location/>
<source>Portrait</source>
- <translation>Portré</translation>
+ <translation>Álló</translation>
</message>
<message>
<location/>
<source>Landscape</source>
- <translation>Tájkép</translation>
+ <translation>Fekvő</translation>
</message>
<message>
<location/>
<source>Reverse landscape</source>
- <translation>Fordított tájkép</translation>
+ <translation>Fordított fekvő</translation>
</message>
<message>
<location/>
<source>Reverse portrait</source>
- <translation>Fordított portré</translation>
+ <translation>Fordított álló</translation>
</message>
<message>
<location/>
<source>Margins</source>
- <translation>Margó</translation>
+ <translation>Margók</translation>
</message>
<message>
<location/>
<source>top margin</source>
- <translation>Felső margó</translation>
+ <translation>felső margó</translation>
</message>
<message>
<location/>
<source>left margin</source>
- <translation>Bal margó</translation>
+ <translation>bal margó</translation>
</message>
<message>
<location/>
<source>right margin</source>
- <translation>Jobb margó</translation>
+ <translation>jobb margó</translation>
</message>
<message>
<location/>
<source>bottom margin</source>
- <translation>Alsó margó</translation>
+ <translation>alsó margó</translation>
+ </message>
+</context>
+<context>
+ <name>QPatternist::QtXmlPatterns</name>
+ <message>
+ <source>An %1-attribute with value %2 has already been declared.</source>
+ <translation type="obsolete">Egy %1-attribútum %2 értékkel már deklarálva van.</translation>
+ </message>
+ <message>
+ <source>An %1-attribute must have a valid %2 as value, which %3 isn&apos;t.</source>
+ <translation type="obsolete">Egy %1-attribútumnak érvényes %2 értékkel kell rendelkeznie, azonban %3 nem az.</translation>
+ </message>
+ <message>
+ <source>%1 is an unsupported encoding.</source>
+ <translation type="obsolete">%1 nem támogatott kódolás.</translation>
+ </message>
+ <message>
+ <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
+ <translation type="obsolete">%1 olyan okteteket tartalmaz, amelyek nem megengedettek a kért %2 kódolásban.</translation>
+ </message>
+ <message>
+ <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
+ <translation type="obsolete">%1 kódrészlet %2 helyen, %3 kódolással érvénytelen XML karakter.</translation>
+ </message>
+ <message>
+ <source>Network timeout.</source>
+ <translation type="obsolete">Időtúllépés.</translation>
+ </message>
+ <message>
+ <source>Element %1 can&apos;t be serialized because it appears outside the document element.</source>
+ <translation type="obsolete">%1 elem nem szerializálható, mert a document elemen kívül szerepel.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
+ <translation type="obsolete">%1 attribútum nem szerializálható, mert legfelső szinten szerepel.</translation>
+ </message>
+ <message>
+ <source>Year %1 is invalid because it begins with %2.</source>
+ <translation type="obsolete">%1 év érvénytelen, mert nem kezdődhet %2-val.</translation>
+ </message>
+ <message>
+ <source>Day %1 is outside the range %2..%3.</source>
+ <translation type="obsolete">A(z) %1. nap nem esik %2 és %3 közé.</translation>
+ </message>
+ <message>
+ <source>Month %1 is outside the range %2..%3.</source>
+ <translation type="obsolete">A(z) %1. hónap nem esik %2 és %3 közé.</translation>
+ </message>
+ <message>
+ <source>Overflow: Can&apos;t represent date %1.</source>
+ <translation type="obsolete">Túlcsordulás: A(z) %1 dátum nem reprezentálható.</translation>
+ </message>
+ <message>
+ <source>Day %1 is invalid for month %2.</source>
+ <translation type="obsolete">Nincs %1 nap %2 hónapban.</translation>
+ </message>
+ <message>
+ <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
+ <translation type="obsolete">Az 24:%1:%2.%3 időpont érvénytelen, mert az óra értéke 24, de a többi érték nem 0; </translation>
+ </message>
+ <message>
+ <source>Time %1:%2:%3.%4 is invalid.</source>
+ <translation type="obsolete">Az %1:%2:%3.%4 időpont érvénytelen.</translation>
+ </message>
+ <message>
+ <source>Overflow: Date can&apos;t be represented.</source>
+ <translation type="obsolete">Túlcsordulás: A dátum nem reprezentálható.</translation>
+ </message>
+ <message>
+ <source>At least one component must be present.</source>
+ <translation type="obsolete">Legalább egy komponenst meg kell adni.</translation>
+ </message>
+ <message>
+ <source>At least one time component must appear after the %1-delimiter.</source>
+ <translation type="obsolete">Legalább egy időkomponenst meg kell adni a(z) %1 elválasztó után.</translation>
+ </message>
+ <message>
+ <source>No operand in an integer division, %1, can be %2.</source>
+ <translation type="obsolete">Nincs operandus az egészosztásnál (%1), akár %2 is lehet.</translation>
+ </message>
+ <message>
+ <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
+ <translation type="obsolete">Az egészosztás (%1) első operandusa nem lehet végtelen (%2).</translation>
+ </message>
+ <message>
+ <source>The second operand in a division, %1, cannot be zero (%2).</source>
+ <translation type="obsolete">Az osztás (%1) második operandusa nem lehet nulla (%2).</translation>
+ </message>
+ <message>
+ <source>%1 is not a valid value of type %2.</source>
+ <translation type="obsolete">%1 nem érvényes érték %2 típusnak.</translation>
+ </message>
+ <message>
+ <source>When casting to %1 from %2, the source value cannot be %3.</source>
+ <translation type="obsolete">Ha %2-t %1-re kényszerítünk, a kiinduló érték nem lehet %3.</translation>
+ </message>
+ <message>
+ <source>Integer division (%1) by zero (%2) is undefined.</source>
+ <translation type="obsolete">A nullával (%2) való egészosztás (%1) nincs értelmezve.</translation>
+ </message>
+ <message>
+ <source>Division (%1) by zero (%2) is undefined.</source>
+ <translation type="obsolete">A nullával (%2) való osztás (%1) nincs értelmezve.</translation>
+ </message>
+ <message>
+ <source>Modulus division (%1) by zero (%2) is undefined.</source>
+ <translation type="obsolete">A nullával (%2) való maradékos osztás (%1) nincs értelmezve.</translation>
+ </message>
+ <message>
+ <source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
+ <translation type="obsolete">%1 %2-vel osztása nem engedélyezett, mert az nem szám.</translation>
+ </message>
+ <message>
+ <source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
+ <translation type="obsolete">%1 típusú érték osztása %2 vagy %3 (pozitív vagy negatív nulla) értékkel nem megengedett.</translation>
+ </message>
+ <message>
+ <source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
+ <translation type="obsolete">%1 típusú érték szorzása %2 vagy %3 (pozitív vagy negatív végtelen) típusú értékkel nem megengedett.</translation>
+ </message>
+ <message>
+ <source>A value of type %1 cannot have an Effective Boolean Value.</source>
+ <translation type="obsolete">%1 típusú érték nem kaphat effektív logikai értéket.</translation>
+ </message>
+ <message>
+ <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
+ <translation type="obsolete">Effektív logikai érték nem számítható olyan sorozatra, melyben kettő vagy több atomi érték szerepel.</translation>
+ </message>
+ <message>
+ <source>Value %1 of type %2 exceeds maximum (%3).</source>
+ <translation type="obsolete">A(z) %2 típusú %1 érték meghaladja a maximumot (%3).</translation>
+ </message>
+ <message>
+ <source>Value %1 of type %2 is below minimum (%3).</source>
+ <translation type="obsolete">A(z) %2 típusú %1 érték kisebb, mint a minimum (%3).</translation>
+ </message>
+ <message>
+ <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
+ <translation type="obsolete">%1 típusú értékben páros számú számjegynek kell szerepelnie. A %2 érték nem megfelelő.</translation>
+ </message>
+ <message>
+ <source>%1 is not valid as a value of type %2.</source>
+ <translation type="obsolete">%1 nem érvényes %2 típusú érték.</translation>
+ </message>
+ <message>
+ <source>Ambiguous rule match.</source>
+ <translation type="obsolete">Nem egyértelmű szabály illeszkedés.</translation>
+ </message>
+ <message>
+ <source>Operator %1 cannot be used on type %2.</source>
+ <translation type="obsolete">%1 operátor nem használható %2 típuson.</translation>
+ </message>
+ <message>
+ <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
+ <translation type="obsolete">%1 operátor nem használható %2 és %3 típusok atomi értékein.</translation>
+ </message>
+ <message>
+ <source>The namespace URI in the name for a computed attribute cannot be %1.</source>
+ <translation type="obsolete">Egy számított attribútum nevében szereplő névtér URI-je nem lehet %1.</translation>
+ </message>
+ <message>
+ <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
+ <translation type="obsolete">Számított attribútum névtér URI-je nem lehet %1 a(z) %2 lokális névvel.</translation>
+ </message>
+ <message>
+ <source>Type error in cast, expected %1, received %2.</source>
+ <translation type="obsolete">Típushiba a konverzió során, várt %1, kapott %2.</translation>
+ </message>
+ <message>
+ <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="obsolete">%1 vagy belőle származó típusra való konverziókor a kiindulási értéknek azonos típusúnak vagy sztring literálnak kell lennie. %2 típus nem engedélyezett.</translation>
+ </message>
+ <message>
+ <source>No casting is possible with %1 as the target type.</source>
+ <translation type="obsolete">%1 típusra való konverzió nem lehetséges.</translation>
+ </message>
+ <message>
+ <source>It is not possible to cast from %1 to %2.</source>
+ <translation type="obsolete">Nem lehetséges %1 típusról %2 típusra konvertálni.</translation>
+ </message>
+ <message>
+ <source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
+ <translation type="obsolete">%1 típusra való konverzió nem lehetséges, mivel absztrakt típus és emiatt nem példányosítható.</translation>
+ </message>
+ <message>
+ <source>It&apos;s not possible to cast the value %1 of type %2 to %3</source>
+ <translation type="obsolete">A(z) %2 típusú %1 érték konverziója %3 típusra nem lehetséges</translation>
+ </message>
+ <message>
+ <source>Failure when casting from %1 to %2: %3</source>
+ <translation type="obsolete">Hiba történt %1 típus %2 típusra történő konvertálásakor: %3</translation>
+ </message>
+ <message>
+ <source>A comment cannot contain %1</source>
+ <translation type="obsolete">Egy megjegyzés nem tartalmazhatja a következőt: %1</translation>
+ </message>
+ <message>
+ <source>A comment cannot end with a %1.</source>
+ <translation type="obsolete">Egy megjegyzés nem végződhet a következőre: %1.</translation>
+ </message>
+ <message>
+ <source>No comparisons can be done involving the type %1.</source>
+ <translation type="obsolete">%1 típus nem szerepelhet összehasonlításban.</translation>
+ </message>
+ <message>
+ <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
+ <translation type="obsolete">%1 operátor nem használható %2 és %3 típusok atomi értékei között.</translation>
+ </message>
+ <message>
+ <source>In a namespace constructor, the value for a namespace cannot be an empty string.</source>
+ <translation type="obsolete">Egy névtér konstruktorában a névtér értéke nem lehet üres karaktersorozat.</translation>
+ </message>
+ <message>
+ <source>The prefix must be a valid %1, which %2 is not.</source>
+ <translation type="obsolete">A prefixum érvényes %1 kell legyen, aminek %2 nem tesz eleget.</translation>
+ </message>
+ <message>
+ <source>The prefix %1 cannot be bound.</source>
+ <translation type="obsolete">%1 prefixum nem köthető.</translation>
+ </message>
+ <message>
+ <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
+ <translation type="obsolete">Csak %1 prefixum köthető %2 kifejezéshez és fordítva.</translation>
+ </message>
+ <message>
+ <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
+ <translation type="obsolete">Attribútum csomópont nem lehet egy document csomópont gyermeke. Emiatt a(z) %1 attribútum nem ide való.</translation>
+ </message>
+ <message>
+ <source>Circularity detected</source>
+ <translation type="obsolete">Körkörös hivatkozás</translation>
+ </message>
+ <message>
+ <source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
+ <translation type="obsolete">Egy könyvtár modult nem lehet közvetlenül kiértékelni. Mindenképp egy fő modulból kell importálni.</translation>
+ </message>
+ <message>
+ <source>No template by name %1 exists.</source>
+ <translation type="obsolete">Nem létezik %1 nevű sablon.</translation>
+ </message>
+ <message>
+ <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="obsolete">Egy %1 típusú érték nem lehet predikátum. Egy predikátumnak szám vagy effektív logikai érték típusúnak kell lennie.</translation>
+ </message>
+ <message>
+ <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="obsolete">A célnév egy feldolgozó utasításban nem lehet %1, kis és nagybetűk semmilyen kombinációjában. Ennek okán %2 érvénytelen.</translation>
+ </message>
+ <message>
+ <source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
+ <translation type="obsolete">%1 érvénytelen célnév egy feldolgozó utasításban. Értéke %2 típusú kell legyen, mint pl. %3.</translation>
+ </message>
+ <message>
+ <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="obsolete">Egy útvonal utolsó lépésének vagy csomópontokat vagy atomi értékeket kell tartalmaznia. A kettő nem keveredhet.</translation>
+ </message>
+ <message>
+ <source>The data of a processing instruction cannot contain the string %1</source>
+ <translation type="obsolete">Egy feldolgozó utasítás adata nem tartalmazhatja a következő sztringet: %1</translation>
+ </message>
+ <message>
+ <source>No namespace binding exists for the prefix %1</source>
+ <translation type="obsolete">Nincs névtér kötés a(z) %1 prefixumhoz</translation>
+ </message>
+ <message>
+ <source>No namespace binding exists for the prefix %1 in %2</source>
+ <translation type="obsolete">Nincs névtér kötés a(z) %1 prefixumhoz %2 helyen</translation>
+ </message>
+ <message>
+ <source>%1 is an invalid %2</source>
+ <translation type="obsolete">%1 egy érvénytelen %2</translation>
+ </message>
+ <message>
+ <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
+ <translation type="obsolete">Az átadott érték %1, de nincs megfelelő %2.</translation>
+ </message>
+ <message>
+ <source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
+ <translation type="obsolete">%1 paraméter kötelező, de nincs megadva megfelelő %2.</translation>
+ </message>
+ <message numerus="yes">
+ <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+ <translation type="obsolete">
+ <numerusform>%1 maximum %n argumentumot fogad, így %2 érvénytelen.</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
+ <translation type="obsolete">
+ <numerusform>%1 legalább %n argumentumot fogad, így %2 érvénytelen.</numerusform>
+ </translation>
+ </message>
+ <message>
+ <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="obsolete">%1 első paramétere nem lehet %2 típusú. Csak numerikus típus, xs:yearMonthDuration vagy dayTimeDuration lehet.</translation>
+ </message>
+ <message>
+ <source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+ <translation type="obsolete">%1 első argumentuma nem lehet %2 típusú. Csak %3, %4 vagy %5 megengedett.</translation>
+ </message>
+ <message>
+ <source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+ <translation type="obsolete">%1 második paramétere nem lehet %2 típusú. Csak %3, %4 vagy %5 megengedett.</translation>
+ </message>
+ <message>
+ <source>%1 is not a valid XML 1.0 character.</source>
+ <translation type="obsolete">%1 érvénytelen XML 1.0 karakter.</translation>
+ </message>
+ <message>
+ <source>The first argument to %1 cannot be of type %2.</source>
+ <translation type="obsolete">%1 első argumentuma nem lehet %2 típusú.</translation>
+ </message>
+ <message>
+ <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="obsolete">%1 függvény második argumentumának gyökér csomópontja document típusú kell legyen. %2 nem document csomópont.</translation>
+ </message>
+ <message>
+ <source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
+ <translation type="obsolete">Ha mindkét értékben zóna eltolás van, akkor annak azonosnak kell lennie. %1 és %2 nem egyezik.</translation>
+ </message>
+ <message>
+ <source>%1 was called.</source>
+ <translation type="obsolete">%1 meghívva.</translation>
+ </message>
+ <message>
+ <source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
+ <translation type="obsolete">%1-t %2 vagy %3 kell kövesse, nem a helyettesítő végén.</translation>
+ </message>
+ <message>
+ <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+ <translation type="obsolete">A(z) %1 csereszöveget legalább egy számjegy kell kövesse, amennyiben az nincs escapelve.</translation>
+ </message>
+ <message>
+ <source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
+ <translation type="obsolete">A csereszövegben %1 csak önmaga vagy %2 escapelésére használható, %3-ra nem</translation>
+ </message>
+ <message>
+ <source>%1 matches newline characters</source>
+ <translation type="obsolete">%1 illeszkedik az újsor karakterekre</translation>
+ </message>
+ <message>
+ <source>%1 and %2 match the start and end of a line.</source>
+ <translation type="obsolete">%1 és %2 a sor elejére és végére is illeszkedik.</translation>
+ </message>
+ <message>
+ <source>Matches are case insensitive</source>
+ <translation type="obsolete">Az illeszkedések nem nagybetű-érzékenyek</translation>
+ </message>
+ <message>
+ <source>Whitespace characters are removed, except when they appear in character classes</source>
+ <translation type="obsolete">A nem nyomtatható karakterek törlésre kerülnek, kivétel ha karakter osztályokban szerepelnek</translation>
+ </message>
+ <message>
+ <source>%1 is an invalid regular expression pattern: %2</source>
+ <translation type="obsolete">%1 érvénytelen reguláris kifejezés minta: %2</translation>
+ </message>
+ <message>
+ <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
+ <translation type="obsolete">%1 érvénytelen kapcsoló reguláris kifejezésekhez. Az érvényes kapcsolók:</translation>
+ </message>
+ <message>
+ <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="obsolete">Ha az első argumentum az üres szekvencia vagy egy nulla hosszúságú sztring (névtér nélkül), akkor nem adható meg prefixum. %1 prefixum lett megadva.</translation>
+ </message>
+ <message>
+ <source>It will not be possible to retrieve %1.</source>
+ <translation type="obsolete">Nem lesz lehetséges %1 lekérése.</translation>
+ </message>
+ <message>
+ <source>The default collection is undefined</source>
+ <translation type="obsolete">Nincs meghatározva az alapértelmezett kollekció</translation>
+ </message>
+ <message>
+ <source>%1 cannot be retrieved</source>
+ <translation type="obsolete">%1-t nem lehet lekérni</translation>
+ </message>
+ <message>
+ <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>
+ <translatorcomment>none ==? semmi, valamelyest félreérthető</translatorcomment>
+ <translation type="obsolete">%1 normalizált formája nem támogatott. A támogatott formák %2, %3, %4 és %5 vagy semmi, pl. az üres sztring (normalizálás nélkül).</translation>
+ </message>
+ <message>
+ <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
+ <translation type="obsolete">Egy zónaeltolásnak a(z) %1..%2 nyílt intervallumba kell esnie. %3 az értékhatáron kívül van.</translation>
+ </message>
+ <message>
+ <source>%1 is not a whole number of minutes.</source>
+ <translation type="obsolete">%1 nem egész számú perc.</translation>
+ </message>
+ <message>
+ <source>The URI cannot have a fragment</source>
+ <translation type="obsolete">A URI nem tartalmazhat töredéket</translation>
+ </message>
+ <message>
+ <source>Required cardinality is %1; got cardinality %2.</source>
+ <translation type="obsolete">Az elvárt kardinalitás %1, azonban %2 lett megadva.</translation>
+ </message>
+ <message>
+ <source>The item %1 did not match the required type %2.</source>
+ <translation type="obsolete">%1 elem nem egyezik a várt %2 típussal.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
+ <translation type="obsolete">A(z) %1 attribútum nem jelenhet meg %2 elemben. Csak szabványos attribútumok szerepelhetnek.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.</source>
+ <translation type="obsolete">A(z) %1 attribútum nem jelenhet meg %2 elemben. Csak %3 és a szabványos attribútumok szerepelhetnek.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.</source>
+ <translation type="obsolete">A(z) %1 attribútum nem jelenhet meg %2 elemben. Csak %3, %4 és a szabványos attribútumok szerepelhetnek.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.</source>
+ <translation type="obsolete">A(z) %1 attribútum nem jelenhet meg %2 elemben. Csak %3 és a szabványos attribútumok szerepelhetnek.</translation>
+ </message>
+ <message>
+ <source>XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is.</source>
+ <translation type="obsolete">Az XSL-T elemekhez tartozó XSL-T attribútumoknak a null névtérben kell szerepelniük, nem a(z) %1 XSL-T névtérben.</translation>
+ </message>
+ <message>
+ <source>The attribute %1 must appear on element %2.</source>
+ <translation type="obsolete">A(z) %1 attribútumnak %2 elemben kell megjelennie.</translation>
+ </message>
+ <message>
+ <source>The element with local name %1 does not exist in XSL-T.</source>
+ <translation type="obsolete">%1 lokális nevű elem nem létezik az XSL-T-ben.</translation>
+ </message>
+ <message>
+ <source>The variable %1 is unused</source>
+ <translation type="obsolete">A(z) %1 változó nincs használva</translation>
+ </message>
+ <message>
+ <source>A construct was encountered which only is allowed in XQuery.</source>
+ <translation type="obsolete">Olyan szerkezetet találtam, ami csak XQuery-ben engedélyezett.</translation>
+ </message>
+ <message>
+ <source>W3C XML Schema identity constraint selector</source>
+ <translation type="obsolete">W3C XML séma azonosító szabály kiválasztó</translation>
+ </message>
+ <message>
+ <source>W3C XML Schema identity constraint field</source>
+ <translation type="obsolete">W3C XML séma azonosító szabály mező</translation>
+ </message>
+ <message>
+ <source>%1 is an unknown schema type.</source>
+ <translation type="obsolete">%1 ismeretlen séma típus.</translation>
+ </message>
+ <message>
+ <source>A template by name %1 has already been declared.</source>
+ <translation type="obsolete">%1 néven már lett sablon deklarálva.</translation>
+ </message>
+ <message>
+ <source>%1 is not a valid numeric literal.</source>
+ <translation type="obsolete">%1 érvénytelen numerikus literál.</translation>
+ </message>
+ <message>
+ <source>Only one %1 declaration can occur in the query prolog.</source>
+ <translation type="obsolete">Csak egy %1 deklaráció szerepelhet a lekérdezés bevezetésben.</translation>
+ </message>
+ <message>
+ <source>The initialization of variable %1 depends on itself</source>
+ <translation type="obsolete">%1 változó inicializálása önmagától függ</translation>
+ </message>
+ <message>
+ <source>No variable by name %1 exists</source>
+ <translation type="obsolete">Nem létezik %1 nevű változó</translation>
+ </message>
+ <message>
+ <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+ <translation type="obsolete">A(z) %1 verzió nem támogatott. A támogatott verzió XQuery 1.0.</translation>
+ </message>
+ <message>
+ <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="obsolete">%1 kódolás érvénytelen. Csak Latin karaktereket tartalmazhat, nem nyomtatható karakterek nélkül és illeszkednie kell %2 reguláris kifejezésre.</translation>
+ </message>
+ <message>
+ <source>No function with signature %1 is available</source>
+ <translation type="obsolete">%1 nevű függvény nem található</translation>
+ </message>
+ <message>
+ <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+ <translation type="obsolete">Egy alapértelmezett névtér deklarációnak meg kell előznie a függvény-, változó- és opció deklarációkat.</translation>
+ </message>
+ <message>
+ <source>Namespace declarations must occur before function, variable, and option declarations.</source>
+ <translation type="obsolete">A névtér deklarációknak meg kell előzniük a függvény-, változó- és opció deklarációkat.</translation>
+ </message>
+ <message>
+ <source>Module imports must occur before function, variable, and option declarations.</source>
+ <translation type="obsolete">Modul importoknak meg kell előzniük a függvény-, változó- és opció deklarációkat.</translation>
+ </message>
+ <message>
+ <source>The keyword %1 cannot occur with any other mode name.</source>
+ <translation type="obsolete">%1 kulcsszó nem szerepelhet együtt semmilyen más mód névvel.</translation>
+ </message>
+ <message>
+ <source>The value of attribute %1 must of type %2, which %3 isn&apos;t.</source>
+ <translation type="obsolete">%1 attribútumának %2 típusúnak kell lennie, aminek %3 nem felel meg.</translation>
+ </message>
+ <message>
+ <source>It is not possible to redeclare prefix %1.</source>
+ <translation type="obsolete">%1 prefixum újradeklarálása nem lehetséges.</translation>
+ </message>
+ <message>
+ <source>The prefix %1 can not be bound. By default, it is already bound to the namespace %2.</source>
+ <translation type="obsolete">%1 prefixum nem köthető. Alapértelmezés szerint már kötve van %2 névtérhez.</translation>
+ </message>
+ <message>
+ <source>Prefix %1 is already declared in the prolog.</source>
+ <translation type="obsolete">%1 prefixum már deklarálva van a bevezetésben.</translation>
+ </message>
+ <message>
+ <source>The name of an option must have a prefix. There is no default namespace for options.</source>
+ <translation type="obsolete">Egy opció nevének kötelező prefixumot megadni. Nics alapértelmezett névetér az opciók számára.</translation>
+ </message>
+ <message>
+ <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
+ <translation type="obsolete">A Schema Import szolgáltatás nem támogatott, így %1 deklarációk nem fogadhatók el.</translation>
+ </message>
+ <message>
+ <source>The target namespace of a %1 cannot be empty.</source>
+ <translation type="obsolete">%1 cél névtere nem lehet üres.</translation>
+ </message>
+ <message>
+ <source>The module import feature is not supported</source>
+ <translation type="obsolete">A modul import szolgáltatás nem támogatott</translation>
+ </message>
+ <message>
+ <source>A variable by name %1 has already been declared.</source>
+ <translation type="obsolete">%1 nevű változó már deklarálva van.</translation>
+ </message>
+ <message>
+ <source>No value is available for the external variable by name %1.</source>
+ <translation type="obsolete">A(z) %1 nevű külső változóhoz nem érhető el érték.</translation>
+ </message>
+ <message>
+ <source>A stylesheet function must have a prefixed name.</source>
+ <translation type="obsolete">Egy stíluslap függvénynek prefixummal ellátott neve kell legyen.</translation>
+ </message>
+ <message>
+ <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="obsolete">Egy felhasználói függvény névtere nem lehet üres (próbálja meg a(z) %1 prefixumot, ami ilyen esetekre van fenntartva)</translation>
+ </message>
+ <message>
+ <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="obsolete">A(z) %1 névtér fenntartott, így felhasználói függvények nem használhatják. Próbálja meg a(z) %2 prefixumot, ami ilyen esetekre van.</translation>
+ </message>
+ <message>
+ <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="obsolete">Egy függvénytár modulban definiált felhasználói függvény névtere meg kell egyezzen a modul névterével. Más szóval %1 kellene legyen %2 helyett</translation>
+ </message>
+ <message>
+ <source>A function already exists with the signature %1.</source>
+ <translation type="obsolete">%1 szignatúrájú függvény már létezik.</translation>
+ </message>
+ <message>
+ <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
+ <translation type="obsolete">Külső függvények nem támogatottak. Minden támogatott függvény használható, külső függvényként való deklarálás nélkül</translation>
+ </message>
+ <message>
+ <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
+ <translation type="obsolete">%1 nevű argumentum már deklarálva lett. Minden argumentumnak egyedinek kell lennie.</translation>
+ </message>
+ <message>
+ <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="obsolete">%1 függvény minta belsejében történő illesztésekor, az argumentumnak változó referenciának vagy szöveges literálnak kell lennie.</translation>
+ </message>
+ <message>
+ <source>In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching.</source>
+ <translation type="obsolete">Egy XSL-T mintában %1 függvény első argumentumának szöveges literálnak kell lennie, ha illesztéshez használjuk.</translation>
+ </message>
+ <message>
+ <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="obsolete">Egy XSL-T mintában %1 függvény első argumentumának szöveges literálnak vagy változó referenciának kell lennie, ha illesztéshez használjuk.</translation>
+ </message>
+ <message>
+ <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
+ <translation type="obsolete">Egy XSL-T mintában %1 függénynek nem lehet harmadik argumentuma.</translation>
+ </message>
+ <message>
+ <source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
+ <translation type="obsolete">Egy XSL-T mintában csak %1 és %2 függvények használhatók illesztéshez, %3 nem.</translation>
+ </message>
+ <message>
+ <source>In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can.</source>
+ <translation type="obsolete">Egy XSL-T mintában %1 tengely nem, csak %2 vagy %3 tengely használható.</translation>
+ </message>
+ <message>
+ <source>%1 is an invalid template mode name.</source>
+ <translation type="obsolete">%1 érvénytelen sablon mód név.</translation>
+ </message>
+ <message>
+ <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="obsolete">Egy for-kifejezésben kötött változó nevének különbözőnek kell lennie, mint a pozicionális változó neve. Így a két %1 nevű változó ütközik.</translation>
+ </message>
+ <message>
+ <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
+ <translation type="obsolete">A Schema Validation szolgáltatás nem támogatott. Ennélfogva %1-kifejezések nem használhatók.</translation>
+ </message>
+ <message>
+ <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
+ <translation type="obsolete">Pragma kifejezések egyike sem támogatott. Ennélfogva léteznie kell egy alapértelmezett kifejezésnek</translation>
+ </message>
+ <message>
+ <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
+ <translation type="obsolete">Minden sablonparaméter neve egyedi kell legyen, %1 azonban duplán szerepel.</translation>
+ </message>
+ <message>
+ <source>The %1-axis is unsupported in XQuery</source>
+ <translation type="obsolete">A(z) %1-tengely nem támogatott XQuery-ben</translation>
+ </message>
+ <message>
+ <source>No function by name %1 is available.</source>
+ <translation type="obsolete">Nincs %1 nevű függvény.</translation>
+ </message>
+ <message>
+ <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+ <translation type="obsolete">Prefixumhoz kötés esetén a névtér URI nem lehet az üres sztring, %1.</translation>
+ </message>
+ <message>
+ <source>%1 is an invalid namespace URI.</source>
+ <translation type="obsolete">%1 érvénytelen névtér URI.</translation>
+ </message>
+ <message>
+ <source>It is not possible to bind to the prefix %1</source>
+ <translation type="obsolete">Nem lehet kötni %1 prefixumhoz</translation>
+ </message>
+ <message>
+ <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation type="obsolete">%1 névtér csak %2-hoz köthető (és minden esetben előre deklarált).</translation>
+ </message>
+ <message>
+ <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation type="obsolete">%1 prefixum csak %2-hoz köthető (és minden esetben előre deklarált).</translation>
+ </message>
+ <message>
+ <source>Two namespace declaration attributes have the same name: %1.</source>
+ <translation type="obsolete">Két névtér-deklaráció attribútum neve azonos: %1.</translation>
+ </message>
+ <message>
+ <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
+ <translation type="obsolete">Egy névtér URI-nek konstansnak kell lennie és nem használhat bennfoglalt kifejezéseket.</translation>
+ </message>
+ <message>
+ <source>An attribute by name %1 has already appeared on this element.</source>
+ <translation type="obsolete">%1 nevű attribútum már szerepel ezen az elemen.</translation>
+ </message>
+ <message>
+ <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
+ <translation type="obsolete">Egy közvetlen elem konstruktor nem jól formázott. %1-t %2 zárja le.</translation>
+ </message>
+ <message>
+ <source>The name %1 does not refer to any schema type.</source>
+ <translation type="obsolete">A(z) %1 név nem mutat semmilyen séma típusra.</translation>
+ </message>
+ <message>
+ <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="obsolete">%1 komplex típus. Komplex típusra való konvertálás nem lehetséges. Azonban atomi típusokra, mint pl. %2 történő konvertálás igen.</translation>
+ </message>
+ <message>
+ <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
+ <translation type="obsolete">%1 nem atomi típus. Típuskonverzió csak atomi típusra történhet.</translation>
+ </message>
+ <message>
+ <source>%1 is not a valid name for a processing-instruction.</source>
+ <translation type="obsolete">%1 érvénytelen feldogozó-utasítás név.</translation>
+ </message>
+ <message>
+ <source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
+ <translatorcomment>in-scope mint XML kulcsszó vagy ~láthatósági kör???</translatorcomment>
+ <translation type="obsolete">%1 nem a láthatóságon belüli attribútum deklarációk között van. A séma import szolgáltatás nem támogatott.</translation>
+ </message>
+ <message>
+ <source>The name of an extension expression must be in a namespace.</source>
+ <translation type="obsolete">Egy kiterjesztés kifejezés nevének névtérben kell lennie.</translation>
+ </message>
+ <message>
+ <source>Element %1 is not allowed at this location.</source>
+ <translation type="obsolete">%1 elem nem engedélyezett ezen a helyen.</translation>
+ </message>
+ <message>
+ <source>Text nodes are not allowed at this location.</source>
+ <translation type="obsolete">Szöveg csomópontok nem engedélyezettek ezen a helyen.</translation>
+ </message>
+ <message>
+ <source>Parse error: %1</source>
+ <translation type="obsolete">Értelmezési hiba: %1</translation>
+ </message>
+ <message>
+ <source>The value of the XSL-T version attribute must be a value of type %1, which %2 isn&apos;t.</source>
+ <translation type="obsolete">Az XSL-T verzió attribútum értékének %1 típusúnak kell lennie, %2 pedig nem az.</translation>
+ </message>
+ <message>
+ <source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
+ <translation type="obsolete">XSL-T 1.0 stíluslap futtatása 2.0 verziójú feldolgozóval.</translation>
+ </message>
+ <message>
+ <source>Unknown XSL-T attribute %1.</source>
+ <translation type="obsolete">Ismeretlen XSLT attributum: %1.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 and %2 are mutually exclusive.</source>
+ <translation type="obsolete">%1 és %2 attribútumok kölcsönösen kizáróak.</translation>
+ </message>
+ <message>
+ <source>In a simplified stylesheet module, attribute %1 must be present.</source>
+ <translation type="obsolete">Egy egyszerűsített stíluslap modulban a(z) %1 attribútumnak jelen kell lennie.</translation>
+ </message>
+ <message>
+ <source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
+ <translation type="obsolete">Ha %1 elemnek nincs %2 attribútuma, akkor %3 vagy %4 attribútuma sem lehet.</translation>
+ </message>
+ <message>
+ <source>Element %1 must have at least one of the attributes %2 or %3.</source>
+ <translation type="obsolete">%1 elemnek valamelyik attribútumát meg kell adni %2 vagy %3 közül.</translation>
+ </message>
+ <message>
+ <source>At least one mode must be specified in the %1-attribute on element %2.</source>
+ <translation type="obsolete">%2 elem %1-attribútumában legalább egy módot meg kell adni.</translation>
+ </message>
+ <message>
+ <source>Element %1 must come last.</source>
+ <translation type="obsolete">%1 elemnek az utolsónak kell lennie.</translation>
+ </message>
+ <message>
+ <source>At least one %1-element must occur before %2.</source>
+ <translation type="obsolete">Legalább egy %1-elemnek szerepelnie kell %2 előtt.</translation>
+ </message>
+ <message>
+ <source>Only one %1-element can appear.</source>
+ <translation type="obsolete">Csak egy %1-elem jelenhet meg.</translation>
+ </message>
+ <message>
+ <source>At least one %1-element must occur inside %2.</source>
+ <translation type="obsolete">Legalább egy %1-elemnek meg kell jelennie %2-n belül.</translation>
+ </message>
+ <message>
+ <source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
+ <translation type="obsolete">Ha %2-n meg van adva %1 attribútum, akkor nem használható szekvencia konstruktor.</translation>
+ </message>
+ <message>
+ <source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
+ <translation type="obsolete">%1 elemnek vagy %2-attribútumának vagy szekvencia konstruktorának lennie kell.</translation>
+ </message>
+ <message>
+ <source>When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor.</source>
+ <translation type="obsolete">Ha paraméter az elvárt, akkor alapértelmezett értéket nem lehet %1-attribútumon vagy szekvencia konstruktoron keresztül átadni.</translation>
+ </message>
+ <message>
+ <source>Element %1 cannot have children.</source>
+ <translation type="obsolete">%1 elemnek nem lehetnek gyermekei.</translation>
+ </message>
+ <message>
+ <source>Element %1 cannot have a sequence constructor.</source>
+ <translation type="obsolete">%1 elemnek nem lehet szekvencia konstruktora.</translation>
+ </message>
+ <message>
+ <source>The attribute %1 cannot appear on %2, when it is a child of %3.</source>
+ <translation type="obsolete">%1 attribútum nem szerepelhet %2-n, ha az %3 gyermeke.</translation>
+ </message>
+ <message>
+ <source>A parameter in a function cannot be declared to be a tunnel.</source>
+ <translation type="obsolete">Egy függvényparaméter nem definiálható mint tunnel.</translation>
+ </message>
+ <message>
+ <source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
+ <translation type="obsolete">Ez a feldolgozó nem séma függő, ezért %1 nem használható.</translation>
+ </message>
+ <message>
+ <source>Top level stylesheet elements must be in a non-null namespace, which %1 isn&apos;t.</source>
+ <translation type="obsolete">Felső szintű stíluslap elemeknek egy nem üres névtérben kell lenniük, ezért %1 nem jó.</translation>
+ </message>
+ <message>
+ <source>The value for attribute %1 on element %2 must either be %3 or %4, not %5.</source>
+ <translation type="obsolete">%2 elem %1 attribútumának értéke %3 vagy %4 kell legyen, de nem %5.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot have the value %2.</source>
+ <translation type="obsolete">%1 attribútum értéke nem lehet %2.</translation>
+ </message>
+ <message>
+ <source>The attribute %1 can only appear on the first %2 element.</source>
+ <translation type="obsolete">%1 attribútum csak az első %2 elem esetén jelenhet meg.</translation>
+ </message>
+ <message>
+ <source>At least one %1 element must appear as child of %2.</source>
+ <translation type="obsolete">Legalább egy %1 elemnek %2 gyermekének kell lennie.</translation>
+ </message>
+ <message>
+ <source>empty</source>
+ <translation type="obsolete">üres</translation>
+ </message>
+ <message>
+ <source>zero or one</source>
+ <translation type="obsolete">nulla vagy egy</translation>
+ </message>
+ <message>
+ <source>exactly one</source>
+ <translation type="obsolete">pontosan egy</translation>
+ </message>
+ <message>
+ <source>one or more</source>
+ <translation type="obsolete">egy vagy több</translation>
+ </message>
+ <message>
+ <source>zero or more</source>
+ <translation type="obsolete">nulla vagy több</translation>
+ </message>
+ <message>
+ <source>Required type is %1, but %2 was found.</source>
+ <translation type="obsolete">Az elvárt típus %1, de a kapott %2.</translation>
+ </message>
+ <message>
+ <source>Promoting %1 to %2 may cause loss of precision.</source>
+ <translation type="obsolete">%1 átalakítása %2 típusra a pontosság elvesztését okozhatja.</translation>
+ </message>
+ <message>
+ <source>The focus is undefined.</source>
+ <translation type="obsolete">A fókusz nincs definiálva.</translation>
+ </message>
+ <message>
+ <source>It&apos;s not possible to add attributes after any other kind of node.</source>
+ <translation type="obsolete">Semmilyen más csomópont után nem adható meg attribútum.</translation>
+ </message>
+ <message>
+ <source>An attribute by name %1 has already been created.</source>
+ <translation type="obsolete">%1 nevű attribútum már létre van hozva.</translation>
+ </message>
+ <message>
+ <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
+ <translation type="obsolete">Csak a Unicode Codepoint Collation támogatott(%1). %2 nem támogatott.</translation>
+ </message>
+ <message>
+ <source>derived element %1 has weaker value constraint than base particle</source>
+ <translation type="obsolete">%1 leszármazott elem értékére vonatkozó megszorítás gyengébb, mint az ősre vonatkozó</translation>
</message>
</context>
<context>
@@ -3797,15 +6592,15 @@ Mégis törölni szeretné?</translation>
<message>
<location line="-113"/>
<source>The plugin was not loaded.</source>
- <translation>A beépülő modult nem sikerült betölteni.</translation>
+ <translation>A plugin nem lett betöltve.</translation>
</message>
</context>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+108"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+110"/>
<source>locally connected</source>
- <translation>Helyileg csatlakoztatva</translation>
+ <translation>helyben csatlakoztatva</translation>
</message>
<message>
<location line="+23"/>
@@ -3820,22 +6615,15 @@ Mégis törölni szeretné?</translation>
<translation>ismeretlen</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+266"/>
- <source>OK</source>
- <translation>OK</translation>
- </message>
- <message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
- <source>Print all</source>
- <translation>Az összes kinyomtatása</translation>
+ <source>Portrait</source>
+ <translation type="obsolete">Álló</translation>
</message>
<message>
- <location line="+2"/>
- <source>Print range</source>
- <translation>Egy tartomány kinyomtatása</translation>
+ <source>Landscape</source>
+ <translation type="obsolete">Fekvő</translation>
</message>
<message>
- <location line="-48"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+333"/>
<source>A0 (841 x 1189 mm)</source>
<translation>A0 (841 x 1189 mm)</translation>
</message>
@@ -3855,7 +6643,12 @@ Mégis törölni szeretné?</translation>
<translation>A3 (297 x 420 mm)</translation>
</message>
<message>
- <location line="+2"/>
+ <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 inch)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>A5 (148 x 210 mm)</source>
<translation>A5 (148 x 210 mm)</translation>
</message>
@@ -3905,7 +6698,12 @@ Mégis törölni szeretné?</translation>
<translation>B4 (250 x 353 mm)</translation>
</message>
<message>
- <location line="+2"/>
+ <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 inch)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>B6 (125 x 176 mm)</source>
<translation>B6 (125 x 176 mm)</translation>
</message>
@@ -3940,222 +6738,324 @@ Mégis törölni szeretné?</translation>
<translation>DLE (110 x 220 mm)</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
+ <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
+ <translation>Executive (7.5 x 10 inch, 191 x 254 mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Folio (210 x 330 mm)</source>
- <translation>Fólió (210 x 330 mm)</translation>
+ <translation>Folio (210 x 330 mm)</translation>
</message>
<message>
<location line="+1"/>
<source>Ledger (432 x 279 mm)</source>
- <translation>Főkönyv (432 x 279 mm)</translation>
+ <translation>Ledger (432 x 279 mm)</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+1"/>
+ <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
+ <translation>Legal (8.5 x 14 inch, 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 inch, 216 x 279 mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Tabloid (279 x 432 mm)</source>
- <translation>Tabletta (279 x 432 mm)</translation>
+ <translation>Tabloïd (279 x 432 mm)</translation>
</message>
<message>
<location line="+1"/>
<source>US Common #10 Envelope (105 x 241 mm)</source>
- <translation>US közös #10 bélyeg (105 x 241 mm)</translation>
+ <translation>US Common #10 Envelope (105 x 241 mm)</translation>
</message>
<message>
- <location line="-25"/>
- <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
- <translation>A4 (210 x 297 mm, 8.26 x 11.7 inches)</translation>
+ <location line="+20"/>
+ <source>Print current page</source>
+ <translation>Jelenlegi oldal nyomtatása</translation>
</message>
<message>
- <location line="+11"/>
- <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
- <translation>B5 (176 x 250 mm, 6.93 x 9.84 inches)</translation>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+271"/>
+ <source>The &apos;From&apos; value cannot be greater than the &apos;To&apos; value.</source>
+ <translation>Az első oldal száma nem lehet nagyobb, mint az utolsó oldalé.</translation>
</message>
<message>
- <location line="+8"/>
- <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
- <translation>Vezető (7.5 x 10 inches, 191 x 254 mm)</translation>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation>OK</translation>
</message>
<message>
- <location line="+3"/>
- <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
- <translation>Legális (8.5 x 14 inches, 216 x 356 mm)</translation>
+ <source>Cancel</source>
+ <translation type="obsolete">Mégsem</translation>
</message>
<message>
- <location line="+1"/>
- <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
- <translation>Levél (8.5 x 11 inches, 216 x 279 mm)</translation>
+ <source>Page size:</source>
+ <translation type="obsolete">Oldalméret:</translation>
</message>
<message>
- <location line="+20"/>
- <source>Print selection</source>
- <translation>Nyomtatási kiválasztás</translation>
+ <source>Orientation:</source>
+ <translation type="obsolete">Tájolás:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+112"/>
+ <source>Paper source:</source>
+ <translation type="obsolete">Papírforrás:</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+113"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
<translation>Nyomtatás</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-359"/>
+ <source>File</source>
+ <translation type="obsolete">Fájl</translation>
+ </message>
+ <message>
+ <source>Printer</source>
+ <translation type="obsolete">Nyomtató</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-392"/>
<source>Print To File ...</source>
- <translation>Fájlba nyomtatás ...</translation>
+ <translation>Nyomtatás fájlba...</translation>
</message>
<message>
- <location line="+82"/>
+ <source>Print dialog</source>
+ <translation type="obsolete">Nyomtatási ablak</translation>
+ </message>
+ <message>
+ <source>Paper format</source>
+ <translation type="obsolete">Papírformátum</translation>
+ </message>
+ <message>
+ <source>Size:</source>
+ <translation type="obsolete">Méret:</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation type="obsolete">Tulajdonságok</translation>
+ </message>
+ <message>
+ <source>Printer info:</source>
+ <translation type="obsolete">Nyomtató információ:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation type="obsolete">Böngészés</translation>
+ </message>
+ <message>
+ <source>Print to file</source>
+ <translation type="obsolete">Nyomtatás fájlba</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-1"/>
+ <source>Print range</source>
+ <translation>Nyomtatási tartomány</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Print all</source>
+ <translation>Összes nyomtatása</translation>
+ </message>
+ <message>
+ <source>Pages from</source>
+ <translation type="obsolete">Kezőoldal</translation>
+ </message>
+ <message>
+ <source>to</source>
+ <translation type="obsolete">utolsó oldal</translation>
+ </message>
+ <message>
+ <source>Selection</source>
+ <translation type="obsolete">Kijelölés</translation>
+ </message>
+ <message>
+ <source>Copies</source>
+ <translation type="obsolete">Másolatok</translation>
+ </message>
+ <message>
+ <source>Number of copies:</source>
+ <translation type="obsolete">Másolatok száma:</translation>
+ </message>
+ <message>
+ <source>Collate</source>
+ <translation type="obsolete">Egyeztetés</translation>
+ </message>
+ <message>
+ <source>Print last page first</source>
+ <translation type="obsolete">Először az utolsó oldal nyomtatása</translation>
+ </message>
+ <message>
+ <source>Other</source>
+ <translation type="obsolete">Egyéb</translation>
+ </message>
+ <message>
+ <source>Print in color if available</source>
+ <translation type="obsolete">Színes nyomtatás, ha lehetséges</translation>
+ </message>
+ <message>
+ <source>Double side printing</source>
+ <translation type="obsolete">Kétszeres méretű nyomtatás</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+82"/>
<source>File %1 is not writable.
Please choose a different file name.</source>
- <translation>A(z) %1 fájl nem írható.
-Kérem válasszon különböző fájl nevet.</translation>
+ <translation>%1 fájl nem írható.
+Válasszon másik fájlnevet.</translation>
</message>
<message>
<location line="+4"/>
<source>%1 already exists.
Do you want to overwrite it?</source>
- <translation>A(z) %1 már létezik.
-Felül szeretné írni?</translation>
+ <translation>%1 már létezik.
+Felülírja?</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-228"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-231"/>
<source>File exists</source>
- <translation>Fájl létezik</translation>
+ <translation>A fájl létezik</translation>
</message>
<message>
<location line="+1"/>
<source>&lt;qt&gt;Do you want to overwrite it?&lt;/qt&gt;</source>
- <translation>&lt;qt&gt;Felül szeretné írni?&lt;/qt&gt;</translation>
+ <translation>&lt;qt&gt;Felülírja?&lt;/qt&gt;</translation>
+ </message>
+ <message>
+ <location line="+231"/>
+ <source>Print selection</source>
+ <translation>Kijelölés nyomtatása</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>A(z) %1 egy könyvtár.
-Kérem válasszon egy különböző fájl nevet.</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>A &apos;-Tól&apos; érték nem lehet nagyobb az &apos;-Ig&apos; értéknél.</translation>
+ <translation>%1 egy könyvtár.
+Válasszon másik fájlnevet.</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-232"/>
<source>A0</source>
- <translation>A0</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A1</source>
- <translation>A1</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A2</source>
- <translation>A2</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A3</source>
- <translation>A3</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A4</source>
- <translation>A4</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A5</source>
- <translation>A5</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A6</source>
- <translation>A6</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A7</source>
- <translation>A7</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A8</source>
- <translation>A8</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>A9</source>
- <translation>A9</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B0</source>
- <translation>B0</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B1</source>
- <translation>B1</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B2</source>
- <translation>B2</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B3</source>
- <translation>B3</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B4</source>
- <translation>B4</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B5</source>
- <translation>B5</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B6</source>
- <translation>B6</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B7</source>
- <translation>B7</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B8</source>
- <translation>B8</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B9</source>
- <translation>B9</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>B10</source>
- <translation>B10</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>C5E</source>
- <translation>C5E</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>DLE</source>
- <translation>DLE</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Executive</source>
- <translation>Vezető</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
@@ -4165,12 +7065,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Ledger</source>
- <translation>Főkönyv</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Legal</source>
- <translation>Legális</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
@@ -4180,12 +7080,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Tabloid</source>
- <translation>Tabletta</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>US Common #10 Envelope</source>
- <translation>US közös #10 bélyeg</translation>
+ <translation>US általános #10-es boríték</translation>
</message>
<message>
<location line="+1"/>
@@ -4193,25 +7093,30 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<translation>Egyéni</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-523"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-530"/>
<location line="+68"/>
<source>&amp;Options &gt;&gt;</source>
<translation>&amp;Opciók &gt;&gt;</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-63"/>
+ <source>&amp;Print</source>
+ <translation>&amp;Nyomtatás</translation>
+ </message>
+ <message>
+ <location line="+67"/>
<source>&amp;Options &lt;&lt;</source>
<translation>&amp;Opciók &lt;&lt;</translation>
</message>
<message>
- <location line="+253"/>
+ <location line="+260"/>
<source>Print to File (PDF)</source>
- <translation>Fájlba nyomtatás (PDF)</translation>
+ <translation>Nyomtatás fájlba (PDF)</translation>
</message>
<message>
<location line="+1"/>
<source>Print to File (Postscript)</source>
- <translation>Fájlba nyomtatás (Postscript)</translation>
+ <translation>Nyomtatás fájlba (PostScript)</translation>
</message>
<message>
<location line="+47"/>
@@ -4221,55 +7126,56 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Write %1 file</source>
- <translation>%1 fájlba írás</translation>
- </message>
- <message>
- <location line="-369"/>
- <source>&amp;Print</source>
- <translation>&amp;Nyomtatás</translation>
+ <translation>írás %1 fájlba</translation>
</message>
</context>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+246"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
+ <location line="+12"/>
+ <source>Page Setup</source>
+ <translation>Oldalbeállítás</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+249"/>
<source>%1%</source>
<translation>%1%</translation>
</message>
<message>
- <location line="+68"/>
+ <location line="+84"/>
<source>Print Preview</source>
- <translation>Nyomtatási előnézet</translation>
+ <translation>Nyomtatási kép</translation>
</message>
<message>
<location line="+30"/>
<source>Next page</source>
- <translation>Következő lap</translation>
+ <translation>Következő oldal</translation>
</message>
<message>
<location line="+1"/>
<source>Previous page</source>
- <translation>Előző lap</translation>
+ <translation>Előző oldal</translation>
</message>
<message>
<location line="+1"/>
<source>First page</source>
- <translation>Első lap</translation>
+ <translation>Első oldal</translation>
</message>
<message>
<location line="+1"/>
<source>Last page</source>
- <translation>Utolsó lap</translation>
+ <translation>Utolsó oldal</translation>
</message>
<message>
<location line="+9"/>
<source>Fit width</source>
- <translation>Megfelelő szélesség</translation>
+ <translation>Szélesség igazítása</translation>
</message>
<message>
<location line="+1"/>
<source>Fit page</source>
- <translation>Megfelelő lap</translation>
+ <translation>Oldal igazítása</translation>
</message>
<message>
<location line="+11"/>
@@ -4284,27 +7190,27 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+6"/>
<source>Portrait</source>
- <translation>Portré</translation>
+ <translation>Álló</translation>
</message>
<message>
<location line="+1"/>
<source>Landscape</source>
- <translation>Tájkép</translation>
+ <translation>Fekvő</translation>
</message>
<message>
<location line="+10"/>
<source>Show single page</source>
- <translation>Egyetlen lap megjelenítése</translation>
+ <translation>Egy oldalas megjelenítés</translation>
</message>
<message>
<location line="+1"/>
<source>Show facing pages</source>
- <translation>Lapok megjelenítése szemből</translation>
+ <translation>Kétoldalas megjelenítés</translation>
</message>
<message>
<location line="+1"/>
<source>Show overview of all pages</source>
- <translation>Az összes lap áttekintésének megjelenítése</translation>
+ <translation>Az összes oldal megjelenítése</translation>
</message>
<message>
<location line="+15"/>
@@ -4314,23 +7220,37 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Page setup</source>
- <translation>Lap beállítás</translation>
+ <translation>Oldalbeállítás</translation>
</message>
<message>
- <location line="+150"/>
+ <location line="+6"/>
+ <source>Close</source>
+ <translation>Bezárás</translation>
+ </message>
+ <message>
+ <location line="+148"/>
<source>Export to PDF</source>
- <translation>PDF-be exportálás</translation>
+ <translation>Exportálás PDF-be</translation>
</message>
<message>
<location line="+3"/>
<source>Export to PostScript</source>
- <translation>PostScript-be exportálás</translation>
+ <translation>Exportálás PostScript-be</translation>
</message>
+</context>
+<context>
+ <name>QPrintPropertiesDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
- <location line="+12"/>
- <source>Page Setup</source>
- <translation>Lap beállítás</translation>
+ <source>PPD Properties</source>
+ <translation type="obsolete">PPD beállítások</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation type="obsolete">Mentés</translation>
+ </message>
+ <message>
+ <source>OK</source>
+ <translation type="obsolete">OK</translation>
</message>
</context>
<context>
@@ -4338,17 +7258,17 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/gui/dialogs/qprintpropertieswidget.ui"/>
<source>Form</source>
- <translation>Forma</translation>
+ <translation>Formátum</translation>
</message>
<message>
<location/>
<source>Page</source>
- <translation>Lap</translation>
+ <translation>Papír</translation>
</message>
<message>
<location/>
<source>Advanced</source>
- <translation>Speciális</translation>
+ <translation>Egyebek</translation>
</message>
</context>
<context>
@@ -4356,57 +7276,57 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/gui/dialogs/qprintsettingsoutput.ui"/>
<source>Form</source>
- <translation>Forma</translation>
+ <translation>Formátum</translation>
</message>
<message>
<location/>
<source>Copies</source>
- <translation>Másolás</translation>
+ <translation>Másolatok</translation>
</message>
<message>
<location/>
<source>Print range</source>
- <translation>Tartomány nyomtatása</translation>
+ <translation>Nyomtatási tartomány</translation>
</message>
<message>
<location/>
<source>Print all</source>
- <translation>Az összes nyomtatása</translation>
+ <translation>Összes nyomtatása</translation>
</message>
<message>
<location/>
<source>Pages from</source>
- <translation>Lapok ettől</translation>
+ <translation>Kezőoldal</translation>
</message>
<message>
<location/>
<source>to</source>
- <translation>eddig</translation>
+ <translation>utolsó oldal</translation>
</message>
<message>
<location/>
<source>Selection</source>
- <translation>Kiválasztás</translation>
+ <translation>Kijelölés</translation>
</message>
<message>
<location/>
<source>Output Settings</source>
- <translation>Kimeneti beállítások</translation>
+ <translation>Kimenet beállítása</translation>
</message>
<message>
<location/>
<source>Copies:</source>
- <translation>Másolatok:</translation>
+ <translation>Másolat:</translation>
</message>
<message>
<location/>
<source>Collate</source>
- <translation>Egyeztet</translation>
+ <translation>Egyeztetés</translation>
</message>
<message>
<location/>
<source>Reverse</source>
- <translation>Fordítva</translation>
+ <translation>Fordított</translation>
</message>
<message>
<location/>
@@ -4416,7 +7336,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location/>
<source>Color Mode</source>
- <translation>Színes mód</translation>
+ <translation>Színmód</translation>
</message>
<message>
<location/>
@@ -4426,27 +7346,32 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location/>
<source>Grayscale</source>
- <translation>Szürkeárnyalat</translation>
+ <translation>Szürkeárnyalatos</translation>
</message>
<message>
<location/>
<source>Duplex Printing</source>
- <translation>Dupla nyomtatás</translation>
+ <translation>Duplex nyomtatás</translation>
</message>
<message>
<location/>
<source>None</source>
- <translation>Semmi</translation>
+ <translation>Nincs</translation>
</message>
<message>
<location/>
<source>Long side</source>
- <translation>Hosszú oldal</translation>
+ <translation>Hosszabb oldal</translation>
</message>
<message>
<location/>
<source>Short side</source>
- <translation>Rövid oldal</translation>
+ <translation>Rövidebb oldal</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Current Page</source>
+ <translation>Jelenlegi oldal</translation>
</message>
</context>
<context>
@@ -4454,7 +7379,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/gui/dialogs/qprintwidget.ui"/>
<source>Form</source>
- <translation>Űrlap</translation>
+ <translation>Formátum</translation>
</message>
<message>
<location/>
@@ -4469,12 +7394,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location/>
<source>P&amp;roperties</source>
- <translation>Tu&amp;lajdonságok</translation>
+ <translation>Tula&amp;jdonságok</translation>
</message>
<message>
<location/>
<source>Location:</source>
- <translation>Elhelyezkedés:</translation>
+ <translation>Hely:</translation>
</message>
<message>
<location/>
@@ -4500,21 +7425,46 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<context>
<name>QProcess</name>
<message>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+866"/>
+ <location line="+52"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+573"/>
+ <location line="+50"/>
+ <source>Error reading from process</source>
+ <translation>Hiba a folyamat kimenetéről olvasáskor</translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <location line="+826"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+140"/>
+ <source>Error writing to process</source>
+ <translation>Hiba a folyamat bemenetére íráskor</translation>
+ </message>
+ <message>
+ <location line="-756"/>
+ <source>Process crashed</source>
+ <translation>A folyamat összeomlott</translation>
+ </message>
+ <message>
+ <location line="+959"/>
+ <source>No program defined</source>
+ <translation>A programnév nincs megadva</translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_unix.cpp" line="+406"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+137"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-626"/>
<source>Could not open input redirection for reading</source>
- <translation>Nem sikerült megnyitni a bevitel olvasásra irányítását</translation>
+ <translation>Az átirányított bemenet megnyitása olvasásra sikertelen</translation>
</message>
<message>
<location line="+12"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="+20"/>
<source>Could not open output redirection for writing</source>
- <translation>Nem sikerült megnyitni a kimenet írásra irányítását</translation>
+ <translation>Az átirányított kimenet megnyitása írásra sikertelen</translation>
</message>
<message>
<location line="+239"/>
<source>Resource error (fork failure): %1</source>
- <translation>Erőforrás hiba (Szétágazás hiba): %1</translation>
+ <translation>A forkolás sikertelen: %1</translation>
</message>
<message>
<location line="+258"/>
@@ -4527,37 +7477,16 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+42"/>
<location line="+54"/>
<source>Process operation timed out</source>
- <translation>Folyamat művelet időtúllépés</translation>
- </message>
- <message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+855"/>
- <location line="+52"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
- <location line="+50"/>
- <source>Error reading from process</source>
- <translation>Hiba történt a folyamat olvasása közben</translation>
- </message>
- <message>
- <location line="+47"/>
- <location line="+826"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+140"/>
- <source>Error writing to process</source>
- <translation>Hiba történt a folyamat írása közben</translation>
- </message>
- <message>
- <location line="-756"/>
- <source>Process crashed</source>
- <translation>A folyamat összeomlott</translation>
+ <translation>A művelet időtúllépés miatt megszakadt</translation>
</message>
<message>
- <location line="+959"/>
- <source>No program defined</source>
- <translation>Nincs program definiálva</translation>
+ <source>Process failed to start</source>
+ <translation type="obsolete">A folyamat nem indult el</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="-360"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-381"/>
<source>Process failed to start: %1</source>
- <translation>Nem sikerült elindítani a folyamatot: %1</translation>
+ <translation>A művelet előkészítése nem lehetséges: %1</translation>
</message>
</context>
<context>
@@ -4565,7 +7494,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+196"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
</context>
<context>
@@ -4581,7 +7510,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+12"/>
<source>Check</source>
- <translation>Ellenőrzés</translation>
+ <translation>Kijelölés</translation>
</message>
</context>
<context>
@@ -4594,22 +7523,22 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>disabled feature used</source>
- <translation>tiltás tulajdonság használva</translation>
+ <translation>letiltott lehetőség használata</translation>
</message>
<message>
<location line="+1"/>
<source>bad char class syntax</source>
- <translation>rossz karakter osztály szintakszis</translation>
+ <translation>rossz karakterosztály-szintaxis</translation>
</message>
<message>
<location line="+1"/>
<source>bad lookahead syntax</source>
- <translation>rossz előreolvasási szintakszis</translation>
+ <translation>rossz lookahead-szintaxis</translation>
</message>
<message>
<location line="+1"/>
<source>bad repetition syntax</source>
- <translation>rossz ismétlési szintakszis</translation>
+ <translation>rossz ismétlés-szintaxis</translation>
</message>
<message>
<location line="+1"/>
@@ -4619,17 +7548,17 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>missing left delim</source>
- <translation>hiányzó bal határolójel</translation>
+ <translation>hiányzó baloldali határoló</translation>
</message>
<message>
<location line="+1"/>
<source>unexpected end</source>
- <translation>váratlan vég</translation>
+ <translation>váratlan befejezés</translation>
</message>
<message>
<location line="+1"/>
<source>met internal limit</source>
- <translation>találkozott belső korlát</translation>
+ <translation>belső korlát elérve</translation>
</message>
<message>
<location line="+1"/>
@@ -4645,100 +7574,112 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+391"/>
+ <source>Error to open database</source>
+ <translation type="obsolete">Adatbázis megnyitási hiba</translation>
+ </message>
+ <message>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+399"/>
<source>Error opening database</source>
- <translation>Hiba történt az adatbázis megnyitása közben</translation>
+ <translation>Adatbázis megnyitási hiba</translation>
</message>
<message>
<location line="+41"/>
<source>Unable to begin transaction</source>
- <translation>Nem lehet elkezdeni a tranzakciót</translation>
+ <translation>A tranzakció nem indítható</translation>
</message>
<message>
<location line="+17"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
</message>
<message>
<location line="+17"/>
<source>Unable to rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
+ </message>
+ <message>
+ <source>Unable to rollback Transaction</source>
+ <translation type="obsolete">A tranzakció nem görgethető vissza</translation>
</message>
</context>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-319"/>
+ <location line="-326"/>
<source>Unable to fetch results</source>
- <translation>Nem lehet letölteni az eredményeket</translation>
+ <translation>Az eredmények nem olvashatók ki</translation>
</message>
<message>
- <location line="+143"/>
+ <location line="+150"/>
<source>Unable to execute statement</source>
- <translation>Nem lehet végrehajtani az állítást</translation>
+ <translation>A parancs nem hajtható végre</translation>
</message>
</context>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+540"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+539"/>
<source>Error opening database</source>
- <translation>Hiba történt az adatbázis megnyitása közben</translation>
+ <translation>Adatbázis megnyitási hiba</translation>
</message>
<message>
<location line="+11"/>
<source>Error closing database</source>
- <translation>Hiba történt az adatbázis bezárása közben</translation>
+ <translation>Adatbázis bezárási hiba</translation>
</message>
<message>
<location line="+20"/>
<source>Unable to begin transaction</source>
- <translation>Nem lehet elkezdeni a tranzakciót</translation>
+ <translation>A tranzakció nem indítható</translation>
</message>
<message>
<location line="+15"/>
<source>Unable to commit transaction</source>
- <translation>Nem lehet kommitolni a tranzakciót</translation>
+ <translation>A tranzakció nem véglegesíthető</translation>
+ </message>
+ <message>
+ <source>Unable to roll back transaction</source>
+ <translation type="obsolete">A tranzakció nem görgethető vissza</translation>
</message>
<message>
<location line="+15"/>
<source>Unable to rollback transaction</source>
- <translation>Nem lehet visszagörgetni a tranzakciót</translation>
+ <translation>A tranzakció nem görgethető vissza</translation>
</message>
</context>
<context>
<name>QSQLiteResult</name>
<message>
- <location line="-404"/>
- <location line="+62"/>
+ <location line="-396"/>
+ <location line="+63"/>
<location line="+8"/>
<source>Unable to fetch row</source>
- <translation>Nem lehet leszedni a sort</translation>
+ <translation>A sor nem olvasható ki</translation>
</message>
<message>
<location line="+59"/>
<source>Unable to execute statement</source>
- <translation>Nem lehet végrehajtani az állítást</translation>
+ <translation>A parancs nem hajtható végre</translation>
</message>
<message>
<location line="+20"/>
<source>Unable to reset statement</source>
- <translation>Nem lehet visszaállítani az állítást</translation>
+ <translation>A parancs nem vonható vissza</translation>
</message>
<message>
<location line="+45"/>
<source>Unable to bind parameters</source>
- <translation>Nem lehet összekötni a paramétereket</translation>
+ <translation>A paraméterek kötése sikertelen</translation>
</message>
<message>
<location line="+7"/>
<source>Parameter count mismatch</source>
- <translation>A paraméter számláló nem megfelelő</translation>
+ <translation>A paraméterek száma nem megfelelő</translation>
</message>
<message>
- <location line="-200"/>
+ <location line="-201"/>
<source>No query</source>
- <translation>Nincs lekérdezés</translation>
+ <translation>Üres lekérdezés</translation>
</message>
</context>
<context>
@@ -4746,12 +7687,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/scripttools/debugging/qscriptbreakpointsmodel.cpp" line="+455"/>
<source>ID</source>
- <translation>Azonosító</translation>
+ <translation>ID</translation>
</message>
<message>
<location line="+2"/>
<source>Location</source>
- <translation>Elhelyezkedés</translation>
+ <translation>Hely</translation>
</message>
<message>
<location line="+2"/>
@@ -4761,17 +7702,18 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Ignore-count</source>
- <translation>Számítás mellőzése</translation>
+ <translation>Kihagyások száma</translation>
</message>
<message>
<location line="+2"/>
<source>Single-shot</source>
- <translation>Egylövetű</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation></translation>
</message>
<message>
<location line="+2"/>
<source>Hit-count</source>
- <translation>Leütés számítás</translation>
+ <translation>Találatok száma</translation>
</message>
</context>
<context>
@@ -4793,7 +7735,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location filename="../src/scripttools/debugging/qscriptdebugger.cpp" line="+885"/>
<location line="+1013"/>
<source>Go to Line</source>
- <translation>Ugrás erre a sorra</translation>
+ <translation>Sorra ugrás</translation>
</message>
<message>
<location line="-1012"/>
@@ -4808,7 +7750,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Shift+F5</source>
- <translation>Shift+F5</translation>
+ <translation></translation>
</message>
<message>
<location line="+15"/>
@@ -4818,97 +7760,97 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>F5</source>
- <translation>F5</translation>
+ <translation></translation>
</message>
<message>
<location line="+15"/>
<source>Step Into</source>
- <translation>Belelépés</translation>
+ <translation>Beleugrás</translation>
</message>
<message>
<location line="+2"/>
<source>F11</source>
- <translation>F11</translation>
+ <translation></translation>
</message>
<message>
<location line="+15"/>
<source>Step Over</source>
- <translation>Átlépés</translation>
+ <translation>Átugrás</translation>
</message>
<message>
<location line="+2"/>
<source>F10</source>
- <translation>F10</translation>
+ <translation></translation>
</message>
<message>
<location line="+15"/>
<source>Step Out</source>
- <translation>Kilép</translation>
+ <translation>Kiugrás</translation>
</message>
<message>
<location line="+2"/>
<source>Shift+F11</source>
- <translation>Shift+F11</translation>
+ <translation></translation>
</message>
<message>
<location line="+15"/>
<source>Run to Cursor</source>
- <translation>Kurzorra futás</translation>
+ <translation>Futtatás a kurzortól</translation>
</message>
<message>
<location line="+2"/>
<source>Ctrl+F10</source>
- <translation>Ctrl+F10</translation>
+ <translation></translation>
</message>
<message>
<location line="+16"/>
<source>Run to New Script</source>
- <translation>Az új Szkriptre futás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+15"/>
<source>Toggle Breakpoint</source>
- <translation>Töréspont kapcsolgatása</translation>
+ <translation>Töréspont beállítása</translation>
</message>
<message>
<location line="+1"/>
<source>F9</source>
- <translation>F9</translation>
+ <translation></translation>
</message>
<message>
<location line="+14"/>
<source>Clear Debug Output</source>
- <translation>Debug kimenet kiürítése</translation>
+ <translation>Debug kimenet törlése</translation>
</message>
<message>
<location line="+13"/>
<source>Clear Error Log</source>
- <translation>Error Log kiürítése</translation>
+ <translation>Hibanapló törlése</translation>
</message>
<message>
<location line="+13"/>
<source>Clear Console</source>
- <translation>Konzol kiürítése</translation>
+ <translation>Konzol törlése</translation>
</message>
<message>
<location line="+14"/>
<source>&amp;Find in Script...</source>
- <translation>Szkriptben &amp;keresés...</translation>
+ <translation>&amp;Keresés a parancsfájlban...</translation>
</message>
<message>
<location line="+1"/>
<source>Ctrl+F</source>
- <translation>Ctrl+F</translation>
+ <translation></translation>
</message>
<message>
<location line="+17"/>
<source>Find &amp;Next</source>
- <translation>&amp;Következő keresése</translation>
+ <translation>Kö&amp;vetkező keresése</translation>
</message>
<message>
<location line="+2"/>
<source>F3</source>
- <translation>F3</translation>
+ <translation></translation>
</message>
<message>
<location line="+13"/>
@@ -4918,17 +7860,17 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Shift+F3</source>
- <translation>Shift+F3</translation>
+ <translation></translation>
</message>
<message>
<location line="+14"/>
<source>Ctrl+G</source>
- <translation>Ctrl+G</translation>
+ <translation></translation>
</message>
<message>
<location line="+11"/>
<source>Debug</source>
- <translation>Debug</translation>
+ <translation>Hibakeresés</translation>
</message>
</context>
<context>
@@ -4951,23 +7893,23 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+5"/>
<source>Case Sensitive</source>
- <translation>Kis és nagybetű érzékeny</translation>
+ <translation>Kis/nagybetű érzékeny</translation>
</message>
<message>
<location line="+3"/>
<source>Whole words</source>
- <translation>Egész szavakat</translation>
+ <translation>Teljes szó</translation>
</message>
<message>
<location line="+9"/>
<source>&lt;img src=&quot;:/qt/scripttools/debugging/images/wrap.png&quot;&gt;&amp;nbsp;Search wrapped</source>
- <translation>&lt;img src=&quot;:/qt/scripttools/debugging/images/wrap.png&quot;&gt;&amp;nbsp;Keresés tördelve</translation>
+ <translation>&lt;img src=&quot;:/qt/scripttools/debugging/images/wrap.png&quot;&gt;&amp;nbsp;A keresés befejeződött</translation>
</message>
</context>
<context>
<name>QScriptDebuggerLocalsModel</name>
<message>
- <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+872"/>
+ <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+897"/>
<source>Name</source>
<translation>Név</translation>
</message>
@@ -4992,7 +7934,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Location</source>
- <translation>Elhelyezkedés</translation>
+ <translation>Hely</translation>
</message>
</context>
<context>
@@ -5000,12 +7942,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/scripttools/debugging/qscriptedit.cpp" line="+411"/>
<source>Toggle Breakpoint</source>
- <translation>Töréspont kapcsolgatása</translation>
+ <translation>Töréspont beállítása</translation>
</message>
<message>
<location line="+2"/>
<source>Disable Breakpoint</source>
- <translation>Töréspont tiltása</translation>
+ <translation>Töréspont letiltása</translation>
</message>
<message>
<location line="+1"/>
@@ -5015,7 +7957,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+4"/>
<source>Breakpoint Condition:</source>
- <translation>Töréspont feltétel:</translation>
+ <translation>Töréspont állapota:</translation>
</message>
</context>
<context>
@@ -5023,7 +7965,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/scripttools/debugging/qscriptenginedebugger.cpp" line="+523"/>
<source>Loaded Scripts</source>
- <translation>Betöltött szkriptek</translation>
+ <translation>Betöltött parancsfájlok</translation>
</message>
<message>
<location line="+6"/>
@@ -5053,7 +7995,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+6"/>
<source>Error Log</source>
- <translation>Hiba Log</translation>
+ <translation>Hibanapló</translation>
</message>
<message>
<location line="+12"/>
@@ -5068,7 +8010,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+18"/>
<source>Qt Script Debugger</source>
- <translation>Qt szkript debugger</translation>
+ <translation>Qt parancsfájl-hibakereső</translation>
</message>
</context>
<context>
@@ -5089,44 +8031,44 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Left edge</source>
- <translation>Bal szegély</translation>
+ <translation>Bal szélen</translation>
</message>
<message>
<location line="+0"/>
<source>Top</source>
- <translation>Tető</translation>
+ <translation>Fent</translation>
</message>
<message>
<location line="+1"/>
<source>Right edge</source>
- <translation>Jobb szegély</translation>
+ <translation>Jobb szélen</translation>
</message>
<message>
<location line="+0"/>
<source>Bottom</source>
- <translation>Alja</translation>
+ <translation>Lent</translation>
</message>
<message>
<location line="+2"/>
<source>Page left</source>
- <translation>Lapzoás balra</translation>
+ <translation>Oldal balra</translation>
</message>
<message>
<location line="+0"/>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+143"/>
<source>Page up</source>
- <translation>Lapozás felfele</translation>
+ <translation>Oldal felfelé</translation>
</message>
<message>
<location line="+1"/>
<source>Page right</source>
- <translation>Lapozás jobbra</translation>
+ <translation>Oldal jobbra</translation>
</message>
<message>
<location line="+0"/>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+4"/>
<source>Page down</source>
- <translation>Lapozás lefele</translation>
+ <translation>Oldal lefelé</translation>
</message>
<message>
<location line="+2"/>
@@ -5136,7 +8078,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+0"/>
<source>Scroll up</source>
- <translation>Görgetés felfele</translation>
+ <translation>Görgetés felfelé</translation>
</message>
<message>
<location line="+1"/>
@@ -5146,48 +8088,53 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+0"/>
<source>Scroll down</source>
- <translation>Görgetés lefele</translation>
+ <translation>Görgetés lefelé</translation>
</message>
<message>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-6"/>
<source>Line up</source>
- <translation>Egy sorral feljebb</translation>
+ <translation>Sor felfelé</translation>
</message>
<message>
<location line="+4"/>
<source>Position</source>
- <translation>Pozíció</translation>
+ <translation>Helyzet</translation>
</message>
<message>
<location line="+4"/>
<source>Line down</source>
- <translation>Egy sorral lejjebb</translation>
+ <translation>Sor lefelé</translation>
</message>
</context>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+304"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+223"/>
+ <source>%1: unable to set key on lock</source>
+ <translation>%1:a kulcs beállítása sikertelen a zároláson</translation>
+ </message>
+ <message>
+ <location line="+81"/>
<source>%1: create size is less then 0</source>
- <translation>%1: 0-nál kisebb méret létrehozása</translation>
+ <translation>%1: a megadott méret kissebb mint 0</translation>
</message>
<message>
<location line="+168"/>
<location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+155"/>
<source>%1: unable to lock</source>
- <translation>%1: Nem lehet zárolni</translation>
+ <translation>%1: a zárolás sikertelen</translation>
</message>
<message>
<location line="+22"/>
<source>%1: unable to unlock</source>
- <translation>%1: Nem lehet kinyitni</translation>
+ <translation>%1: a feloldás sikertelen</translation>
</message>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+83"/>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+79"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+81"/>
<location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
- <translation>%1: engedély megtagadva</translation>
+ <translation>%1: hozzáférés megtagadva</translation>
</message>
<message>
<location line="-16"/>
@@ -5199,14 +8146,14 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+4"/>
<source>%1: doesn&apos;t exists</source>
- <translation>%1: nem létezik</translation>
+ <translation>%1: nem tatlálható</translation>
</message>
<message>
<location line="+8"/>
<location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+10"/>
<location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+18"/>
<source>%1: out of resources</source>
- <translation>%1: Kifogyott az erőforrásból</translation>
+ <translation>%1: az erőforrások elfogytak</translation>
</message>
<message>
<location line="+7"/>
@@ -5218,19 +8165,23 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+21"/>
<source>%1: key is empty</source>
- <translation>%1: Üres kulcs</translation>
+ <translation>%1: a kulcs hiányzik</translation>
+ </message>
+ <message>
+ <source>%1: unix key file doesn&apos;t exists</source>
+ <translation type="obsolete">%1: az unix kulcsfájl hiányzik</translation>
</message>
<message>
<location line="+15"/>
<source>%1: ftok failed</source>
- <translation>%1: ftok hiba</translation>
+ <translation>%1: ftok hibát adott vissza</translation>
</message>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+56"/>
<location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+51"/>
<location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+15"/>
<source>%1: unable to make key</source>
- <translation>%1: Nem lehet kulcsot csinálni</translation>
+ <translation>%1: a kulcs elkészítése sikertelen</translation>
</message>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-97"/>
@@ -5241,23 +8192,23 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+39"/>
<source>%1: UNIX key file doesn&apos;t exist</source>
- <translation>%1: UNIX kulcs fájl nem létezik</translation>
+ <translation>%1: az UNIX kulcsfájl nem létezik</translation>
</message>
<message>
<location line="+78"/>
<source>%1: system-imposed size restrictions</source>
- <translation>%1: a rendszer rárakott méretének korlátozásai</translation>
+ <translation>%1: a rendszer méretkorlátokat állított fel</translation>
</message>
<message>
<location line="+53"/>
<source>%1: not attached</source>
- <translation>%1: nincs hozzácsatolva</translation>
+ <translation>%1: nem lesz csatolva</translation>
</message>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-67"/>
<location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+4"/>
<source>%1: invalid size</source>
- <translation>%1: érvénytelen méret</translation>
+ <translation>%1: hibás méret</translation>
</message>
<message>
<location line="+40"/>
@@ -5268,130 +8219,126 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+32"/>
<source>%1: size query failed</source>
- <translation>%1: méret lekérdezési hiba</translation>
- </message>
- <message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="-271"/>
- <source>%1: unable to set key on lock</source>
- <translation>%1: nem lehet beállítani a kulcsot a záron</translation>
+ <translation>%1: hiba a méret lekérdezésekor</translation>
</message>
</context>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+393"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+396"/>
<source>Space</source>
- <translation>Space</translation>
+ <extracomment>This and all following &quot;incomprehensible&quot; strings in QShortcut context are key names. Please use the localized names appearing on actual keyboards or whatever is commonly used.</extracomment>
+ <translation>Szóköz</translation>
</message>
<message>
<location line="+1"/>
<source>Esc</source>
- <translation>Esc</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Tab</source>
- <translation>Tab</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Backtab</source>
- <translation>Backtab</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Backspace</source>
- <translation>Backspace</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Return</source>
- <translation>Return</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Enter</source>
- <translation>Enter</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Ins</source>
- <translation>Ins</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Del</source>
- <translation>Del</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Pause</source>
- <translation>Pause</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Print</source>
- <translation>Print</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>SysReq</source>
- <translation>SysReq</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Home</source>
- <translation>Home</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>End</source>
- <translation>End</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Left</source>
- <translation>Left</translation>
+ <translation>Bal</translation>
</message>
<message>
<location line="+1"/>
<source>Up</source>
- <translation>Up</translation>
+ <translation>Fel</translation>
</message>
<message>
<location line="+1"/>
<source>Right</source>
- <translation>Right</translation>
+ <translation>Jobb</translation>
</message>
<message>
<location line="+1"/>
<source>Down</source>
- <translation>Down</translation>
+ <translation>Le</translation>
</message>
<message>
<location line="+1"/>
<source>PgUp</source>
- <translation>PgUp</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>PgDown</source>
- <translation>PgDown</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>CapsLock</source>
- <translation>CapsLock</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>NumLock</source>
- <translation>NumLock</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>ScrollLock</source>
- <translation>ScrollLock</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
@@ -5416,57 +8363,57 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Stop</source>
- <translation>Leállítás</translation>
+ <translation>Stop</translation>
</message>
<message>
<location line="+1"/>
<source>Refresh</source>
- <translation>Felfrissítés</translation>
+ <translation>Frissítés</translation>
</message>
<message>
<location line="+1"/>
<source>Volume Down</source>
- <translation>Hangerő lehalkítása</translation>
+ <translation>Hangerő csökkentése</translation>
</message>
<message>
<location line="+1"/>
<source>Volume Mute</source>
- <translation>Hangerő Elnémítás</translation>
+ <translation>Némítás</translation>
</message>
<message>
<location line="+1"/>
<source>Volume Up</source>
- <translation>Hangerő hangosítása</translation>
+ <translation>Hangerő növelése</translation>
</message>
<message>
<location line="+1"/>
<source>Bass Boost</source>
- <translation>Basszus erősítés</translation>
+ <translation>Mély hang kiemelése</translation>
</message>
<message>
<location line="+1"/>
<source>Bass Up</source>
- <translation>Basszus növelése</translation>
+ <translation>Mély hang növelése</translation>
</message>
<message>
<location line="+1"/>
<source>Bass Down</source>
- <translation>Basszus csökkentése</translation>
+ <translation>Mély hang csökkentése</translation>
</message>
<message>
<location line="+1"/>
<source>Treble Up</source>
- <translation>Felháromszorozás</translation>
+ <translation>Magas hang növelése</translation>
</message>
<message>
<location line="+1"/>
<source>Treble Down</source>
- <translation>Leharmadolás</translation>
+ <translation>Magas hang csökkentése</translation>
</message>
<message>
<location line="+1"/>
<source>Media Play</source>
- <translation>Média elindítása</translation>
+ <translation>Média lejátszása</translation>
</message>
<message>
<location line="+1"/>
@@ -5491,7 +8438,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Favorites</source>
- <translation>Kedvcencek</translation>
+ <translation>Kedvencek</translation>
</message>
<message>
<location line="+1"/>
@@ -5501,127 +8448,127 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Standby</source>
- <translation>Készenlét</translation>
+ <translation>Standby</translation>
</message>
<message>
<location line="+1"/>
<source>Open URL</source>
- <translation>URL megnyitása</translation>
+ <translation>URL megynyitása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch Mail</source>
- <translation>Mail indítása</translation>
+ <translation>Levelezőprogram indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch Media</source>
- <translation>Média indítása</translation>
+ <translation>Médialejátszó indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (0)</source>
- <translation>Elindítás (0)</translation>
+ <translation>(0) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (1)</source>
- <translation>Elindítás (1)</translation>
+ <translation>(1) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (2)</source>
- <translation>Elindítás (2)</translation>
+ <translation>(2) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (3)</source>
- <translation>Elindítás (3)</translation>
+ <translation>(3) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (4)</source>
- <translation>Elindítás (4)</translation>
+ <translation>(4) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (5)</source>
- <translation>Elindítás (5)</translation>
+ <translation>(5) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (6)</source>
- <translation>Elindítás (6)</translation>
+ <translation>(6) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (7)</source>
- <translation>Elindítás (7)</translation>
+ <translation>(7) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (8)</source>
- <translation>Elindítás (8)</translation>
+ <translation>(8) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (9)</source>
- <translation>Elindítás (9)</translation>
+ <translation>(9) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (A)</source>
- <translation>Elindítás (A)</translation>
+ <translation>(A) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (B)</source>
- <translation>Elindítás (B)</translation>
+ <translation>(B) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (C)</source>
- <translation>Elindítás (C)</translation>
+ <translation>(C) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (D)</source>
- <translation>Elindítás (D)</translation>
+ <translation>(D) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (E)</source>
- <translation>Elindítás (E)</translation>
+ <translation>(E) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Launch (F)</source>
- <translation>Elindítás (F)</translation>
+ <translation>(F) indítása</translation>
</message>
<message>
<location line="+1"/>
<source>Monitor Brightness Up</source>
- <translation>Monitorfény növelése</translation>
+ <translation>Fényesség növelése</translation>
</message>
<message>
<location line="+1"/>
<source>Monitor Brightness Down</source>
- <translation>Monitorfény csökkentése</translation>
+ <translation>Fényesség csökkentése</translation>
</message>
<message>
<location line="+1"/>
<source>Keyboard Light On/Off</source>
- <translation>Billentyű világítás be/ki</translation>
+ <translation>Billentyűzet világítás be/ki</translation>
</message>
<message>
<location line="+1"/>
<source>Keyboard Brightness Up</source>
- <translation>Billentyűfény növelése</translation>
+ <translation>Billentyűzet fényerő növelése</translation>
</message>
<message>
<location line="+1"/>
<source>Keyboard Brightness Down</source>
- <translation>Billentyűfény csökkentése</translation>
+ <translation>Billentyűzet fényerő csökkentése</translation>
</message>
<message>
<location line="+1"/>
@@ -5631,27 +8578,27 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Wake Up</source>
- <translation>Felébresztés</translation>
+ <translation>Ébresztés</translation>
</message>
<message>
<location line="+1"/>
<source>Eject</source>
- <translation>Kidobás</translation>
+ <translation>Tálcanyitás</translation>
</message>
<message>
<location line="+1"/>
<source>Screensaver</source>
- <translation>Képernyővédő</translation>
+ <translation>Képernyőkímélő</translation>
</message>
<message>
<location line="+1"/>
<source>WWW</source>
- <translation>WWW</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Sleep</source>
- <translation>Alvás</translation>
+ <translation>Altatás</translation>
</message>
<message>
<location line="+1"/>
@@ -5666,22 +8613,22 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>History</source>
- <translation>Történelem</translation>
+ <translation>Előzmények</translation>
</message>
<message>
<location line="+1"/>
<source>Add Favorite</source>
- <translation>Hozzáadás a kedvencekhez</translation>
+ <translation>Kedvenc hozzáadása</translation>
</message>
<message>
<location line="+1"/>
<source>Hot Links</source>
- <translation>Hot linkek</translation>
+ <translation>Gyorslinkek</translation>
</message>
<message>
<location line="+1"/>
<source>Adjust Brightness</source>
- <translation>Fényszabályozás</translation>
+ <translation>Fényerő beállítása</translation>
</message>
<message>
<location line="+1"/>
@@ -5696,22 +8643,25 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Audio Rewind</source>
- <translation>Audió áttekercselés</translation>
+ <translation>Visszatekerés</translation>
</message>
<message>
<location line="+1"/>
<source>Back Forward</source>
- <translation>Előre hátra</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>Előre-hátra</translation>
</message>
<message>
<location line="+1"/>
<source>Application Left</source>
- <translation>Alkalmazás balra</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>Alkalmazás bal</translation>
</message>
<message>
<location line="+1"/>
<source>Application Right</source>
- <translation>Alkalmazás jobbra</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>Alkalmazás jobb</translation>
</message>
<message>
<location line="+1"/>
@@ -5731,12 +8681,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Clear</source>
- <translation>Tiszta</translation>
+ <translation>Törlés</translation>
</message>
<message>
<location line="+1"/>
<source>Clear Grab</source>
- <translation>Tiszta megmarkolás</translation>
+ <translation>Elfogás törlése</translation>
</message>
<message>
<location line="+1"/>
@@ -5756,6 +8706,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Display</source>
+ <translatorcomment>CHECKIT - Kijelző?</translatorcomment>
<translation>Megjelenítés</translation>
</message>
<message>
@@ -5771,7 +8722,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Spreadsheet</source>
- <translation>Táblázatkezelő</translation>
+ <translation>Táblázat</translation>
</message>
<message>
<location line="+1"/>
@@ -5786,7 +8737,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Go</source>
- <translation>Gyerünk</translation>
+ <translation>Ugrás</translation>
</message>
<message>
<location line="+1"/>
@@ -5801,7 +8752,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Market</source>
- <translation>Piac</translation>
+ <translation>Piactér</translation>
</message>
<message>
<location line="+1"/>
@@ -5811,17 +8762,18 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Keyboard Menu</source>
- <translation>Billlentyű menü</translation>
+ <translation>Billentyűzet menü</translation>
</message>
<message>
<location line="+1"/>
<source>Menu PB</source>
- <translation>PB menü</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">PB menü</translation>
</message>
<message>
<location line="+1"/>
<source>My Sites</source>
- <translation>Oldalam</translation>
+ <translation>Weboldalaim</translation>
</message>
<message>
<location line="+1"/>
@@ -5836,7 +8788,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Option</source>
- <translation>Opció</translation>
+ <translation>Opciók</translation>
</message>
<message>
<location line="+1"/>
@@ -5866,12 +8818,14 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Rotation PB</source>
- <translation>PB forgatás</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">PB forgatás</translation>
</message>
<message>
<location line="+1"/>
<source>Rotation KB</source>
- <translation>KB forgatás</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">KB forgatás</translation>
</message>
<message>
<location line="+1"/>
@@ -5886,12 +8840,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Spellchecker</source>
- <translation>Helyesírás ellenőrző</translation>
+ <translation>Nyelvi ellenörző</translation>
</message>
<message>
<location line="+1"/>
<source>Split Screen</source>
- <translation>Képernyő felosztása</translation>
+ <translation>Képernyő kettéosztása</translation>
</message>
<message>
<location line="+1"/>
@@ -5901,7 +8855,8 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Task Panel</source>
- <translation>Feladat panel</translation>
+ <translatorcomment>CHECKIT - WTF?</translatorcomment>
+ <translation>Taszk panel</translation>
</message>
<message>
<location line="+1"/>
@@ -5926,12 +8881,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Word Processor</source>
- <translation>Szó feldolgozó</translation>
+ <translation>Szövegszerkesztő</translation>
</message>
<message>
<location line="+1"/>
<source>XFer</source>
- <translation>XFer</translation>
+ <translation>Átvitel</translation>
</message>
<message>
<location line="+1"/>
@@ -5951,17 +8906,17 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Messenger</source>
- <translation>Hírnök</translation>
+ <translation>Üzenetküldő</translation>
</message>
<message>
<location line="+1"/>
<source>WebCam</source>
- <translation>WebCam</translation>
+ <translation>Webkamera</translation>
</message>
<message>
<location line="+1"/>
<source>Mail Forward</source>
- <translation>Mail továbbítása</translation>
+ <translation>Levél továbbítás</translation>
</message>
<message>
<location line="+1"/>
@@ -5986,37 +8941,37 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Wireless</source>
- <translation>Vezeték nélküli</translation>
+ <translation>Wireless</translation>
</message>
<message>
<location line="+1"/>
<source>Ultra Wide Band</source>
- <translation>Ultra széles sáv</translation>
+ <translation>Szélessáv</translation>
</message>
<message>
<location line="+1"/>
<source>Audio Forward</source>
- <translation>Audio továbbítás</translation>
+ <translation>Előretekerés</translation>
</message>
<message>
<location line="+1"/>
<source>Audio Repeat</source>
- <translation>Audió ismétlés</translation>
+ <translation>Ismétlés</translation>
</message>
<message>
<location line="+1"/>
<source>Audio Random Play</source>
- <translation>Audió véletlenszerű lejátszása</translation>
+ <translation>Random lejátszás</translation>
</message>
<message>
<location line="+1"/>
<source>Subtitle</source>
- <translation>Alcím</translation>
+ <translation>Felirat</translation>
</message>
<message>
<location line="+1"/>
<source>Audio Cycle Track</source>
- <translation>Audió ciklikus követése</translation>
+ <translation>Sávismétlés</translation>
</message>
<message>
<location line="+1"/>
@@ -6031,12 +8986,13 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Top Menu</source>
- <translation>Felső menü</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>Legfelső menü</translation>
</message>
<message>
<location line="+1"/>
<source>Suspend</source>
- <translation>Felfüggesztés</translation>
+ <translation>Altatás</translation>
</message>
<message>
<location line="+1"/>
@@ -6046,63 +9002,63 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+4"/>
<source>Print Screen</source>
- <translation>Képernyő másolás</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Page Up</source>
- <translation>Feljebb lapozás</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Page Down</source>
- <translation>Lejjebb lapozás</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Caps Lock</source>
- <translation>Caps Lock</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Num Lock</source>
- <translation>Num Lock</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Number Lock</source>
- <translation>Number Lock</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Scroll Lock</source>
- <translation>Scroll Lock</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Insert</source>
- <translation>Insert</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Delete</source>
- <translation>Delete</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>Escape</source>
- <translation>Escape</translation>
+ <translation></translation>
</message>
<message>
<location line="+1"/>
<source>System Request</source>
- <translation>System Request</translation>
+ <translation></translation>
</message>
<message>
<location line="-18"/>
<location line="+22"/>
<source>Select</source>
- <translation>Kiválsztás</translation>
+ <translation>Kiválasztás</translation>
</message>
<message>
<location line="+1"/>
@@ -6117,22 +9073,22 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+4"/>
<source>Context1</source>
- <translation>Tartalom1</translation>
+ <translation>Kontextus1</translation>
</message>
<message>
<location line="+1"/>
<source>Context2</source>
- <translation>Tartalom2</translation>
+ <translation>Kontextus2</translation>
</message>
<message>
<location line="+1"/>
<source>Context3</source>
- <translation>Tartalom3</translation>
+ <translation>Kontextus3</translation>
</message>
<message>
<location line="+1"/>
<source>Context4</source>
- <translation>Tartalom4</translation>
+ <translation>Kontextus4</translation>
</message>
<message>
<location line="+1"/>
@@ -6142,41 +9098,191 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Hangup</source>
- <translation>Felfüggeszt</translation>
+ <translation>Hívás vége</translation>
</message>
<message>
<location line="+1"/>
<source>Flip</source>
- <translation>Feldobás</translation>
+ <translation>Csere</translation>
</message>
<message>
- <location line="+573"/>
+ <location line="+4"/>
+ <source>Kanji</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Muhenkan</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Henkan</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Romaji</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hiragana</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Katakana</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hiragana Katakana</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zenkaku</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hankaku</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zenkaku Hankaku</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Touroku</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Massyo</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Kana Lock</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Kana Shift</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Eisu Shift</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Eisu toggle</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Code input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Multiple Candidate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Previous Candidate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Hangul</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Start</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul End</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Hanja</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Jamo</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Romaja</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Jeonja</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Banja</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul PreHanja</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul PostHanja</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Special</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+602"/>
<location line="+135"/>
<source>Ctrl</source>
- <translation>Ctrl</translation>
+ <translation></translation>
</message>
<message>
<location line="-134"/>
<location line="+138"/>
<source>Shift</source>
- <translation>Shift</translation>
+ <translation></translation>
</message>
<message>
<location line="-137"/>
<location line="+135"/>
<source>Alt</source>
- <translation>Alt</translation>
+ <translation></translation>
</message>
<message>
<location line="-134"/>
<location line="+130"/>
<source>Meta</source>
- <translation>Meta</translation>
+ <translation></translation>
</message>
<message>
<location line="-40"/>
<source>+</source>
- <translation>+</translation>
+ <translation></translation>
</message>
<message>
<location line="+61"/>
@@ -6184,9 +9290,9 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<translation>F%1</translation>
</message>
<message>
- <location line="-869"/>
+ <location line="-934"/>
<source>Home Page</source>
- <translation>Honlap</translation>
+ <translation>Kezdőoldal</translation>
</message>
</context>
<context>
@@ -6194,106 +9300,110 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+151"/>
<source>Page left</source>
- <translation>Lapozás balra</translation>
+ <translation>Oldal balra</translation>
</message>
<message>
<location line="+0"/>
<source>Page up</source>
- <translation>Lapozás felfele</translation>
+ <translation>Oldal felfelé</translation>
</message>
<message>
<location line="+2"/>
<source>Position</source>
- <translation>Pozíció</translation>
+ <translation>Helyzet</translation>
</message>
<message>
<location line="+3"/>
<source>Page right</source>
- <translation>Lapozás jobbra</translation>
+ <translation>Oldal jobbra</translation>
</message>
<message>
<location line="+0"/>
<source>Page down</source>
- <translation>Lapozás lefele</translation>
+ <translation>Oldal lefelé</translation>
</message>
</context>
<context>
<name>QSocks5SocketEngine</name>
<message>
+ <source>Socks5 timeout error connecting to socks server</source>
+ <translation type="obsolete">Időtúllépés a socks szerverhez kapcsolódáskor</translation>
+ </message>
+ <message>
<location filename="../src/network/socket/qsocks5socketengine.cpp" line="-67"/>
<source>Connection to proxy refused</source>
- <translation>Proxyhoz kapcsolódás elutasítva</translation>
+ <translation>A proxy elutasította a kapcsolatot</translation>
</message>
<message>
<location line="+4"/>
<source>Connection to proxy closed prematurely</source>
- <translation>A proxyhoz való csatlakozás túl korán be lett zárva</translation>
+ <translation>A proxy váratlanul lezárta a kapcsolatot</translation>
</message>
<message>
<location line="+4"/>
<source>Proxy host not found</source>
- <translation>Proxy hoszt nem található</translation>
+ <translation>A proxy nem található</translation>
</message>
<message>
<location line="+5"/>
<source>Connection to proxy timed out</source>
- <translation>Proxyhoz való csatlakozásnál időtúllépés történt</translation>
+ <translation>A várakozási idő lejárt a proxyhoz</translation>
</message>
<message>
<location line="+17"/>
<source>Proxy authentication failed</source>
- <translation>Proxy hitelesítési hiba</translation>
+ <translation>A proxy azonosítás sikertelen</translation>
</message>
<message>
<location line="+1"/>
<source>Proxy authentication failed: %1</source>
- <translation>Proxy hitelesítési hiba: %1</translation>
+ <translation>A proxy azonosítás sikertelen: %1</translation>
</message>
<message>
<location line="+9"/>
<source>SOCKS version 5 protocol error</source>
- <translation>SOCKS verzió 5-s protokoll hiba</translation>
+ <translation>SOCKS verzió 5-ös protokoll hiba</translation>
</message>
<message>
<location line="+19"/>
<source>General SOCKSv5 server failure</source>
- <translation>Általános SOCKSv5 szerver hiba</translation>
+ <translation>Általános SOCKSv5 szerverhiba</translation>
</message>
<message>
<location line="+4"/>
<source>Connection not allowed by SOCKSv5 server</source>
- <translation>A csatlakozást nem engedi a SOCKSv5 szerver</translation>
+ <translation>A kapcsolódást nem engedi a SOCKSv5 szerver</translation>
</message>
<message>
<location line="+16"/>
<source>TTL expired</source>
- <translation>Lejárt a TTL</translation>
+ <translation>A TTL lejárt</translation>
</message>
<message>
<location line="+4"/>
<source>SOCKSv5 command not supported</source>
- <translation>SOCKSv5 parancs nincs támogatva</translation>
+ <translation>A SOCKSv5 parancs nem támogatott</translation>
</message>
<message>
<location line="+4"/>
<source>Address type not supported</source>
- <translation>Cím típus nincs támogatva</translation>
+ <translation>A címtípus nem támogatott</translation>
</message>
<message>
<location line="+5"/>
<source>Unknown SOCKSv5 proxy error code 0x%1</source>
- <translation>Ismeretlen SOCKSv5 proxy hiba kód 0x%1</translation>
+ <translation>Ismeretlen SOCKSv5 proxy hibakód: 0x%1</translation>
</message>
<message>
<location line="+689"/>
<source>Network operation timed out</source>
- <translation>Hálózat műveleti időtúllépés</translation>
+ <translation>Időtúllépés hálózati művelet során</translation>
</message>
</context>
<context>
<name>QSoftKeyManager</name>
<message>
- <location filename="../src/gui/kernel/qsoftkeymanager.cpp" line="+79"/>
+ <location filename="../src/gui/kernel/qsoftkeymanager.cpp" line="+63"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
@@ -6315,10 +9425,10 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+3"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
- <location line="+172"/>
+ <location filename="../src/gui/kernel/qsoftkeymanager_s60.cpp" line="+321"/>
<source>Exit</source>
<translation>Kilépés</translation>
</message>
@@ -6333,7 +9443,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Less</source>
- <translation>Kevés</translation>
+ <translation>Kevesebb</translation>
</message>
</context>
<context>
@@ -6346,7 +9456,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Delete this record?</source>
- <translation>Törölni szeretné ezt a felvételt?</translation>
+ <translation>Rekord törlése?</translation>
</message>
<message>
<location line="+1"/>
@@ -6375,12 +9485,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+4"/>
<source>Save edits?</source>
- <translation>Szerkesztések mentése?</translation>
+ <translation>Módosítások mentése?</translation>
</message>
<message>
<location line="+3"/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
<location line="+32"/>
@@ -6390,65 +9500,74 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>Cancel your edits?</source>
- <translation>Szerkesztések visszavonása?</translation>
+ <translation>Módosítások elvetése?</translation>
</message>
</context>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+546"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+550"/>
<source>Unable to write data: %1</source>
- <translation>Nem lehet adatot írni: %1</translation>
+ <translation>Az adat nem írható: %1</translation>
</message>
<message>
- <location line="+119"/>
+ <location line="+63"/>
+ <source>Unable to decrypt data: %1</source>
+ <translation>Az adat nem visszafejthető: %1</translation>
+ </message>
+ <message>
+ <location line="+76"/>
<source>Error while reading: %1</source>
- <translation>Hiba történt olvasás közben: %1</translation>
+ <translation>Olvasási hiba: %1</translation>
</message>
<message>
<location line="+96"/>
<source>Error during SSL handshake: %1</source>
- <translation>Hiba történt az SSL kézfogás közben: %1</translation>
+ <translation>SSL kézfogás hiba: %1</translation>
</message>
<message>
- <location line="-501"/>
+ <location line="-524"/>
<source>Error creating SSL context (%1)</source>
- <translation>Hiba történt az SSL összefüggés (%1) létrehozása közben</translation>
+ <translation>Az SSL kontextus létrehozása sikertelen (%1)</translation>
</message>
<message>
<location line="+25"/>
<source>Invalid or empty cipher list (%1)</source>
- <translation>Érvénytelen vagy üres számjegy lista (%1)</translation>
+ <translation>Érvénytelen vagy üres a titkosítók listája (%1)</translation>
</message>
<message>
- <location line="+42"/>
+ <location line="+45"/>
<source>Private key does not certify public key, %1</source>
- <translation>A privát kulcs nem igazolja a publikus kulcsot, %1</translation>
+ <translation>A privát és a publikus kulcs nem illik össze: %1</translation>
</message>
<message>
<location line="+20"/>
<source>Error creating SSL session, %1</source>
- <translation>Hiba történt az SSL szakasz létrehozása közben, %1</translation>
+ <translation>Hiba az SSL munkamenet létrehozásakor, %1</translation>
</message>
<message>
<location line="+15"/>
<source>Error creating SSL session: %1</source>
- <translation>Hiba történt az SSL szakasz létrehozása közben: %1</translation>
+ <translation>Hiba az SSL munkamenet létrehozásakor: %1</translation>
</message>
<message>
- <location line="-61"/>
+ <location line="-64"/>
<source>Cannot provide a certificate with no key, %1</source>
- <translation>Nem lehet biztosítani egy igazolást kulcs nélkül, %1</translation>
+ <translation>Kulcs nélkül nem állítható ki tanusítvány, %1</translation>
</message>
<message>
<location line="+7"/>
<source>Error loading local certificate, %1</source>
- <translation>Hiba történt a helyi igazolás betöltése közben, %1</translation>
+ <translation>Hiba a helyi tanúsítvány betöltése közben, %1</translation>
</message>
<message>
- <location line="+12"/>
+ <location line="+15"/>
<source>Error loading private key, %1</source>
- <translation>Hiba történt a privát kulcs betöltése közben, %1</translation>
+ <translation>Hiba a titkos kulcs betöltése közben, %1</translation>
+ </message>
+ <message>
+ <source>Private key does not certificate public key, %1</source>
+ <translation type="obsolete">A privát és a publikus kulcs nem illik össze: %1</translation>
</message>
<message>
<location filename="../src/network/ssl/qsslerror.cpp" line="+213"/>
@@ -6458,107 +9577,109 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+3"/>
<source>The issuer certificate could not be found</source>
- <translation>A problémás igazolás nem található</translation>
+ <translation>A kibocsátó tanusítványa nem található</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate signature could not be decrypted</source>
- <translation>Az igazolás aláírás titkosítását nem sikerült feloldani</translation>
+ <translation>A tanusítvány aláírása nem visszafejthető</translation>
</message>
<message>
<location line="+3"/>
<source>The public key in the certificate could not be read</source>
- <translation>Az igazolásban található publikus kulcsot nem sikerült olvasni</translation>
+ <translation>A tanusítvány publikus kulcsa nem olvasható</translation>
</message>
<message>
<location line="+3"/>
<source>The signature of the certificate is invalid</source>
- <translation>Az igazolás aláírása érvénytelen</translation>
+ <translation>A tanusítvány aláírása érvénytelen</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate is not yet valid</source>
- <translation>Az igazolás még nem érvényes</translation>
+ <translation>A tanusítvány még nem érvényes</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate has expired</source>
- <translation>Az igazolás lejárt</translation>
+ <translation>A tanusítvány már lejárt</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate&apos;s notBefore field contains an invalid time</source>
- <translation>A mező érvénytelen idő tartalmazása előtt nincsen igazolás</translation>
+ <translation>A tanusítvány notBefore mezője érvénytelen időpontot tartalmaz</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate&apos;s notAfter field contains an invalid time</source>
- <translation>A mező érvénytelen idő tartalmazása után nincsen igazolás</translation>
+ <translation>A tanusítvány notAfter mezője érvénytelen időpontot tartalmaz</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate is self-signed, and untrusted</source>
- <translation>Az igazolás ön jelölt, és megbízhatatlan</translation>
+ <translation>A tanusítvány önaláírt és nem megbízható</translation>
</message>
<message>
<location line="+3"/>
<source>The root certificate of the certificate chain is self-signed, and untrusted</source>
- <translation>Az igazolás lánc rendszergazda igazolása ön jelölt és megbízhatatlan</translation>
+ <translation>A tanusítványlánc gyökértanusítványa önaláírt, és nem megbízható</translation>
</message>
<message>
<location line="+3"/>
<source>The issuer certificate of a locally looked up certificate could not be found</source>
- <translation>Egy helyileg utánanézett igazolás problémás igazolása nem található</translation>
+ <translatorcomment>CHECKIT: looked up</translatorcomment>
+ <translation>A megtalált tanusítvány kibocsátójának tanusítványa nem található</translation>
</message>
<message>
<location line="+3"/>
<source>No certificates could be verified</source>
- <translation>Nem sikerült igazolást leellenőrizni</translation>
+ <translation>Nincs ellenőrizhető tanusítvány</translation>
</message>
<message>
<location line="+3"/>
<source>One of the CA certificates is invalid</source>
- <translation>A CA igazolások egyike érvénytelen</translation>
+ <translation>Az egyik tanusítványkibocsátó tanusítványa érvénytelen</translation>
</message>
<message>
<location line="+3"/>
<source>The basicConstraints path length parameter has been exceeded</source>
- <translation>Az alap megszorítási útvonal hossz paramétereket meghaladták</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">A basicConstraints hosszának értéke túl nagy</translation>
</message>
<message>
<location line="+3"/>
<source>The supplied certificate is unsuitable for this purpose</source>
- <translation>A szolgáltatott igazolás nem alkalmas erre a célra</translation>
+ <translation>A megadott tanusítvány nem használható erre a célra</translation>
</message>
<message>
<location line="+3"/>
<source>The root CA certificate is not trusted for this purpose</source>
- <translation>A rendszergazda CA igazolás nem megbízható erre a célra</translation>
+ <translation>A tanusítványkibocsátó tanusítványa nem használható erre a célra</translation>
</message>
<message>
<location line="+3"/>
<source>The root CA certificate is marked to reject the specified purpose</source>
- <translation>A rendszergazda CA igazolás a specializást cél megtagadására lett megjelölve</translation>
+ <translation>A tanusítványkibocsátó tanusítványa nem engedi, hogy e célra használják</translation>
</message>
<message>
<location line="+3"/>
<source>The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate</source>
- <translation>Az aktuális jelölt problémás igazolása meg lett tagadva, mert a téma neve nem egyezett az aktuális igazolás problémás nevével</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate</source>
- <translation>Az aktuális jelölt problémás igazolása el lett utasítva, mert a problémás név és sorszám benyűjtva és nem egyezett az aktuális igazolás hitelesítési kulcs azonosítójával</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>The peer did not present any certificate</source>
- <translation>A kortárs nem nyújtott be egyetlen igazolást sem</translation>
+ <translation>A partner nem szolgáltatott semmilyen tanusítványt</translation>
</message>
<message>
<location line="+3"/>
<source>The host name did not match any of the valid hosts for this certificate</source>
- <translation>A hoszt név nem egyezik egyetlen érvényes hoszttal sem erre az igazolásra</translation>
+ <translation>A gépnév nem felel meg a tanusítványon találha gépnevek egyikének sem</translation>
</message>
<message>
<location line="+6"/>
@@ -6571,17 +9692,17 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/corelib/statemachine/qstatemachine.cpp" line="+1028"/>
<source>Missing initial state in compound state &apos;%1&apos;</source>
- <translation>Hiányzó kezdeti állapot összetett helyzetben &apos;%1&apos;</translation>
+ <translation>A kezdeti állapot hiányzik egy összetett állapotnál &apos;%1&apos;</translation>
</message>
<message>
<location line="+7"/>
<source>Missing default state in history state &apos;%1&apos;</source>
- <translation>Hiányzó alapértelmezett állapot a történelmi állapotokban &apos;%1&apos;</translation>
+ <translation>Az alapértelmezett állapot nem található a(z) &apos;%1&apos; megelőző állapotban</translation>
</message>
<message>
<location line="+7"/>
<source>No common ancestor for targets and source of transition from state &apos;%1&apos;</source>
- <translation>Nincs közös őse az átmeneti céloknak és forrásnak a(z) &apos;%1&apos; helyzetből</translation>
+ <translation>Nincs közös őse a forrásállapotnak és a célállapotoknak a(z) &apos;%1&apos; állapotból való átmenetben</translation>
</message>
<message>
<location line="+4"/>
@@ -6592,21 +9713,10 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<context>
<name>QSystemSemaphore</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-46"/>
- <source>%1: does not exist</source>
- <translation>%1 : nem létezik</translation>
- </message>
- <message>
- <location line="+5"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
- <source>%1: out of resources</source>
- <translation>%1: kifogyott az erőforrásból</translation>
- </message>
- <message>
- <location line="-13"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+4"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-54"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+70"/>
<source>%1: permission denied</source>
- <translation>%1: Engedély megtagadva</translation>
+ <translation>%1: hozzáférés megtagadva</translation>
</message>
<message>
<location line="+4"/>
@@ -6614,8 +9724,19 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<translation>%1: már létezik</translation>
</message>
<message>
- <location line="+13"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+3"/>
+ <location line="+4"/>
+ <source>%1: does not exist</source>
+ <translation>%1: még nem létezik</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="-4"/>
+ <source>%1: out of resources</source>
+ <translation>%1: az erőforrások elfogytak</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+7"/>
<source>%1: unknown error %2</source>
<translation>%1: ismeretlen hiba %2</translation>
</message>
@@ -6625,12 +9746,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+595"/>
<source>Unable to open connection</source>
- <translation>Nem lehet megnyitni a kapcsolatot</translation>
+ <translation>A kapcsolat nem nyitható meg</translation>
</message>
<message>
<location line="+5"/>
<source>Unable to use database</source>
- <translation>Nem lehet az adatbázist használni</translation>
+ <translation>Az adatbázis nem használható</translation>
</message>
</context>
<context>
@@ -6643,28 +9764,32 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+0"/>
<source>Scroll Right</source>
- <translation>Görgetésre jobbra</translation>
+ <translation>Görgetés jobbra</translation>
</message>
</context>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+ <source>Socket operation unsupported</source>
+ <translation type="obsolete">Socket művelet nem támogatott</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+292"/>
<source>Operation on socket is not supported</source>
- <translation>A socketen végzett művelet nem támogatott</translation>
+ <translation>A művelet nem támogatott socketeken</translation>
</message>
</context>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+2024"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+2046"/>
<source>&amp;Undo</source>
<translation>&amp;Visszavonás</translation>
</message>
<message>
<location line="+2"/>
<source>&amp;Redo</source>
- <translation>&amp;Megismétlés</translation>
+ <translation>Új&amp;ra</translation>
</message>
<message>
<location line="+4"/>
@@ -6679,7 +9804,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+7"/>
<source>Copy &amp;Link Location</source>
- <translation>&amp;Link címének másolása</translation>
+ <translation>&amp;Link helyének másolása</translation>
</message>
<message>
<location line="+6"/>
@@ -6694,7 +9819,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+7"/>
<source>Select All</source>
- <translation>Az összes kiválasztása</translation>
+ <translation>Összes kijelölése</translation>
</message>
</context>
<context>
@@ -6703,7 +9828,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+310"/>
<location line="+6"/>
<source>Press</source>
- <translation>Megnyomás</translation>
+ <translation>Nyomja meg</translation>
</message>
<message>
<location line="-4"/>
@@ -6715,9 +9840,9 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+179"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+189"/>
<source>This platform does not support IPv6</source>
- <translation>Ez a platform nem támogatja az IPv6-t</translation>
+ <translation>A platform nem támogatja az IPv6-ot</translation>
</message>
</context>
<context>
@@ -6730,7 +9855,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+28"/>
<source>Redo</source>
- <translation>Megismétlés</translation>
+ <translation>Újra</translation>
</message>
</context>
<context>
@@ -6751,7 +9876,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+27"/>
<source>Redo</source>
- <translation>Megismétlés</translation>
+ <translation>Újra</translation>
</message>
</context>
<context>
@@ -6759,85 +9884,89 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/gui/text/qtextcontrol.cpp" line="+899"/>
<source>LRM Left-to-right mark</source>
- <translation>LRM balról jobbra jelölés</translation>
+ <translation>LRM Balról jobbra jelölő</translation>
</message>
<message>
<location line="+1"/>
<source>RLM Right-to-left mark</source>
- <translation>RLM jobbról balra jelölés</translation>
+ <translation>LRM Jobbról balra jelölő</translation>
</message>
<message>
<location line="+1"/>
<source>ZWJ Zero width joiner</source>
- <translation>ZWJ Nulla szélességű asztalos</translation>
+ <translation>ZWJ Nulla szélességű egyesítő jelölő</translation>
</message>
<message>
<location line="+1"/>
<source>ZWNJ Zero width non-joiner</source>
- <translation>ZWNJ Nulla szélességű nem asztalos</translation>
+ <translation>ZWN Nulla szélességű nem-egyesítő jelölő</translation>
</message>
<message>
<location line="+1"/>
<source>ZWSP Zero width space</source>
- <translation>ZWSP Nulla szélességű hely</translation>
+ <translation>ZWSP Nulla szélességű szóköz</translation>
</message>
<message>
<location line="+1"/>
<source>LRE Start of left-to-right embedding</source>
- <translation>LRE Balról jobbra beágyazás kezdete</translation>
+ <translation>LRE balról-jobbra beágyazás kezdete</translation>
</message>
<message>
<location line="+1"/>
<source>RLE Start of right-to-left embedding</source>
- <translation>RLE Jobbról balra beágyazás kezdete</translation>
+ <translation>RLE jobbról-balra beágyazás kezdete</translation>
</message>
<message>
<location line="+1"/>
<source>LRO Start of left-to-right override</source>
- <translation>LRO Balról jobbra megsemmisítés kezdete</translation>
+ <translation>LRO balról-jobbra felülbírálás kezdete</translation>
</message>
<message>
<location line="+1"/>
<source>RLO Start of right-to-left override</source>
- <translation>RLO Jobbról balra megsemmisítés kezdete</translation>
+ <translation>RLO Jobbról-balra felülbírálás kezdete</translation>
</message>
<message>
<location line="+1"/>
<source>PDF Pop directional formatting</source>
- <translation>PDF Kérirányú formázás benézése</translation>
+ <translation>PDF normál irányú formázási jelölő</translation>
</message>
<message>
<location line="+6"/>
<source>Insert Unicode control character</source>
- <translation>Unicode vezérlő karakter beszúrása</translation>
+ <translation>Unicode vezérlőkarakter beszúrása</translation>
</message>
</context>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+712"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+753"/>
<source>Request cancelled</source>
- <translation>Kérés visszavonva</translation>
+ <translation>A kérés megszakítva</translation>
</message>
<message>
<location line="+19"/>
<source>Request blocked</source>
- <translation>Kérés blokkolva</translation>
+ <translation>A kérést blokkolták</translation>
</message>
<message>
<location line="+7"/>
<source>Cannot show URL</source>
- <translation>Nem lehet megjeleníteni az URL-t</translation>
+ <translation>A cím nem megjeleníthető</translation>
</message>
<message>
<location line="+6"/>
<source>Frame load interrupted by policy change</source>
- <translation>Irányvonal megváltozása miatt a szerkezet töltése megszakítva</translation>
+ <translation>A keret betöltése szabályváltoztatás miatt megszakadt</translation>
+ </message>
+ <message>
+ <source>Frame load interruped by policy change</source>
+ <translation type="obsolete">A keret betöltése szabályváltoztatás miatt megszakadt</translation>
</message>
<message>
<location line="+6"/>
<source>Cannot show mimetype</source>
- <translation>Nem lehet megjeleníteni mime típust</translation>
+ <translation>Nem megjeleníthető fájltípus</translation>
</message>
<message>
<location line="+6"/>
@@ -6848,34 +9977,50 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<context>
<name>QWebPage</name>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+347"/>
+ <source>Redirection limit reached</source>
+ <translation>Átirányítási korlát elérve</translation>
+ </message>
+ <message>
+ <location line="+121"/>
+ <source>Bad HTTP request</source>
+ <translation>Hibás HTTP kérés</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+44"/>
<source>Submit</source>
<comment>default label for Submit buttons in forms on web pages</comment>
- <translation>Feltöltés</translation>
+ <translation>Küldés</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>Feltöltés</translation>
+ <translation>Küldés</translation>
</message>
<message>
<location line="+5"/>
<source>Reset</source>
<comment>default label for Reset buttons in forms on web pages</comment>
- <translation>Helyreállítás</translation>
+ <translation>Törlés</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+11"/>
+ <source>This is a searchable index. Enter search keywords: </source>
+ <comment>text that appears at the start of nearly-obsolete web pages in the form of a &apos;searchable index&apos;</comment>
+ <translation>Ez egy kereshető index. Írja be a keresendő szavakat: </translation>
+ </message>
+ <message>
+ <location line="+5"/>
<source>Choose File</source>
<comment>title for file button used in HTML forms</comment>
- <translation>Fájl kiválasztása</translation>
+ <translation>Fájl tallózása</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>Nincsen egyetlen fájl sem kiválasztva</translation>
+ <translation>Nincs fájl kiválaszva</translation>
</message>
<message>
<location line="+5"/>
@@ -6887,13 +10032,13 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Save Link...</source>
<comment>Download Linked File context menu item</comment>
- <translation>Link mentése...</translation>
+ <translation>Link célpontjának mentése...</translation>
</message>
<message>
<location line="+5"/>
<source>Copy Link</source>
<comment>Copy Link context menu item</comment>
- <translation>Link másolása</translation>
+ <translation>Link címének másolása</translation>
</message>
<message>
<location line="+5"/>
@@ -6905,7 +10050,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Save Image</source>
<comment>Download Image context menu item</comment>
- <translation>Kép elmentése</translation>
+ <translation>Kép mentése</translation>
</message>
<message>
<location line="+5"/>
@@ -6917,7 +10062,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Open Frame</source>
<comment>Open Frame in New Window context menu item</comment>
- <translation>Szerkezet megnyitása</translation>
+ <translation>Keret megnyitása új ablakban</translation>
</message>
<message>
<location line="+5"/>
@@ -6929,25 +10074,25 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Go Back</source>
<comment>Back context menu item</comment>
- <translation>Menj vissza</translation>
+ <translation>Vissza</translation>
</message>
<message>
<location line="+5"/>
<source>Go Forward</source>
<comment>Forward context menu item</comment>
- <translation>Menj előre</translation>
+ <translation>Előre</translation>
</message>
<message>
<location line="+5"/>
<source>Stop</source>
<comment>Stop context menu item</comment>
- <translation>Leállítás</translation>
+ <translation>Stop</translation>
</message>
<message>
<location line="+5"/>
<source>Reload</source>
<comment>Reload context menu item</comment>
- <translation>Újratöltés</translation>
+ <translation>Frissítés</translation>
</message>
<message>
<location line="+5"/>
@@ -6965,13 +10110,13 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>No Guesses Found</source>
<comment>No Guesses Found context menu item</comment>
- <translation>Nincs feltételezések találata</translation>
+ <translation>Nincs találat</translation>
</message>
<message>
<location line="+5"/>
<source>Ignore</source>
<comment>Ignore Spelling context menu item</comment>
- <translation>Mellőzés</translation>
+ <translation>Kihagyás</translation>
</message>
<message>
<location line="+5"/>
@@ -6989,7 +10134,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Look Up In Dictionary</source>
<comment>Look Up in Dictionary context menu item</comment>
- <translation>Utánanézés szótárban</translation>
+ <translation>Keresés a szótárban</translation>
</message>
<message>
<location line="+5"/>
@@ -7001,49 +10146,49 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Ignore</source>
<comment>Ignore Grammar context menu item</comment>
- <translation>Mellőzés</translation>
+ <translation>Kihagyás</translation>
</message>
<message>
<location line="+5"/>
<source>Spelling</source>
<comment>Spelling and Grammar context sub-menu item</comment>
- <translation>Helyesírás</translation>
+ <translation>Nyelvi eszközök</translation>
</message>
<message>
<location line="+5"/>
<source>Show Spelling and Grammar</source>
<comment>menu item title</comment>
- <translation>Helyesírás és nyelvtan megjelenítése</translation>
+ <translation>Nyelvi eszközök megjelenítése</translation>
</message>
<message>
<location line="+1"/>
<source>Hide Spelling and Grammar</source>
<comment>menu item title</comment>
- <translation>Helyesírás és nyelvtan elrejtése</translation>
+ <translation>Nyelvi eszközök elrejtése</translation>
</message>
<message>
<location line="+5"/>
<source>Check Spelling</source>
<comment>Check spelling context menu item</comment>
- <translation>Helyesírás ellenőrzés</translation>
+ <translation>Nyelvhelyesség ellenőrzése</translation>
</message>
<message>
<location line="+5"/>
<source>Check Spelling While Typing</source>
<comment>Check spelling while typing context menu item</comment>
- <translation>Helyesírás ellenőrzés gépelés közben</translation>
+ <translation>Nyelvhelyesség ellenőrzése gépeléskor</translation>
</message>
<message>
<location line="+5"/>
<source>Check Grammar With Spelling</source>
<comment>Check grammar with spelling context menu item</comment>
- <translation>Nyelvtani ellenőrzés helyesírás ellenőrzéssel</translation>
+ <translation>Nyelvtan ellenőrzése</translation>
</message>
<message>
<location line="+5"/>
<source>Fonts</source>
<comment>Font context sub-menu item</comment>
- <translation>Betű</translation>
+ <translation>Betűtípus</translation>
</message>
<message>
<location line="+5"/>
@@ -7061,25 +10206,25 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Underline</source>
<comment>Underline context menu item</comment>
- <translation>Aláhúzás</translation>
+ <translation>Aláhúzott</translation>
</message>
<message>
<location line="+5"/>
<source>Outline</source>
<comment>Outline context menu item</comment>
- <translation>Kontúrozás</translation>
+ <translation>Áthúzott</translation>
</message>
<message>
<location line="+5"/>
<source>Direction</source>
<comment>Writing direction context sub-menu item</comment>
- <translation>Irány összefüggések írás, menü elem</translation>
+ <translation>Irány</translation>
</message>
<message>
<location line="+5"/>
<source>Text Direction</source>
<comment>Text direction context sub-menu item</comment>
- <translation>Szöveg irány</translation>
+ <translation>Szövegirány</translation>
</message>
<message>
<location line="+5"/>
@@ -7100,7 +10245,13 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<translation>Jobbról balra</translation>
</message>
<message>
- <location line="+105"/>
+ <location line="+100"/>
+ <source>Missing Plug-in</source>
+ <comment>Label text to be used when a plug-in is missing</comment>
+ <translation>Egy plug-in hiányzik</translation>
+ </message>
+ <message>
+ <location line="+20"/>
<source>Loading...</source>
<comment>Media controller status message when the media is loading</comment>
<translation>Betöltés...</translation>
@@ -7109,31 +10260,31 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+5"/>
<source>Live Broadcast</source>
<comment>Media controller status message when watching a live broadcast</comment>
- <translation>Élő bejelentés</translation>
+ <translation>Élő adás</translation>
</message>
<message>
<location line="+8"/>
<source>Audio Element</source>
<comment>Media controller element</comment>
- <translation>Audió elem</translation>
+ <translation>Hang elem</translation>
</message>
<message>
<location line="+2"/>
<source>Video Element</source>
<comment>Media controller element</comment>
- <translation>Videó elem</translation>
+ <translation>Video elem</translation>
</message>
<message>
<location line="+2"/>
<source>Mute Button</source>
<comment>Media controller element</comment>
- <translation>Elnémítás gomb</translation>
+ <translation>Némítás gomb</translation>
</message>
<message>
<location line="+2"/>
<source>Unmute Button</source>
<comment>Media controller element</comment>
- <translation>Elnémítás megszűntetése gomb</translation>
+ <translation>Némítás feloldása gomb</translation>
</message>
<message>
<location line="+2"/>
@@ -7145,7 +10296,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+2"/>
<source>Pause Button</source>
<comment>Media controller element</comment>
- <translation>Szünet gomb</translation>
+ <translation>Megállítás gomb</translation>
</message>
<message>
<location line="+2"/>
@@ -7157,19 +10308,19 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+2"/>
<source>Slider Thumb</source>
<comment>Media controller element</comment>
- <translation>Csuszka ujj</translation>
+ <translation>Csúszka pozícionáló</translation>
</message>
<message>
<location line="+2"/>
<source>Rewind Button</source>
<comment>Media controller element</comment>
- <translation>Áttekercselés gomb</translation>
+ <translation>Visszatekerés gomb</translation>
</message>
<message>
<location line="+2"/>
<source>Return to Real-time Button</source>
<comment>Media controller element</comment>
- <translation>A valós idejűre visszatérés gomb</translation>
+ <translation>Valós időre visszatérés gombja</translation>
</message>
<message>
<location line="+2"/>
@@ -7181,133 +10332,135 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+2"/>
<source>Remaining Time</source>
<comment>Media controller element</comment>
- <translation>Fennmaradó idő</translation>
+ <translation>Hátralévő idő</translation>
</message>
<message>
<location line="+2"/>
<source>Status Display</source>
<comment>Media controller element</comment>
- <translation>Státusz kijelzés</translation>
+ <translation>Állapotkijelző</translation>
</message>
<message>
<location line="+2"/>
<source>Fullscreen Button</source>
<comment>Media controller element</comment>
- <translation>Teljes képernyő gomb</translation>
+ <translation>Teljes méret gomb</translation>
</message>
<message>
<location line="+2"/>
<source>Seek Forward Button</source>
<comment>Media controller element</comment>
- <translation>Keresés továbbítása gomb</translation>
+ <translation>Előre keresés gomb</translation>
</message>
<message>
<location line="+2"/>
<source>Seek Back Button</source>
<comment>Media controller element</comment>
- <translation>Keresés visszafele gomb</translation>
+ <translation>Visszafele keresés gomb</translation>
</message>
<message>
<location line="+8"/>
<source>Audio element playback controls and status display</source>
<comment>Media controller element</comment>
- <translation>Audió elem visszajátszás vezérlők és státusz kijelzés</translation>
+ <translation>Hang elem lejátszásvezérlői és állapotkijelzője</translation>
</message>
<message>
<location line="+2"/>
<source>Video element playback controls and status display</source>
<comment>Media controller element</comment>
- <translation>Videó elem visszajátszás vezérlők és státusz kijelzés</translation>
+ <translation>Videó elem lejátszásvezérlői és állapotkijelzője</translation>
</message>
<message>
<location line="+2"/>
<source>Mute audio tracks</source>
<comment>Media controller element</comment>
- <translation>Audió számok elnémítása</translation>
+ <translation>Hangsávok elnémítása</translation>
</message>
<message>
<location line="+2"/>
<source>Unmute audio tracks</source>
<comment>Media controller element</comment>
- <translation>Audió számok elnémításának megszűntetése</translation>
+ <translation>Hangsávok visszakapcsolása</translation>
</message>
<message>
<location line="+2"/>
<source>Begin playback</source>
<comment>Media controller element</comment>
- <translation>Visszajátszás megkezdése</translation>
+ <translation>Lejátszás indítása</translation>
</message>
<message>
<location line="+2"/>
<source>Pause playback</source>
<comment>Media controller element</comment>
- <translation>Visszajátszás szüneteltetése</translation>
+ <translation>Lejátszás megállítása</translation>
</message>
<message>
<location line="+2"/>
<source>Movie time scrubber</source>
<comment>Media controller element</comment>
- <translation>Film idő súroló</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>Mozi idő csúszka sáv</translation>
</message>
<message>
<location line="+2"/>
<source>Movie time scrubber thumb</source>
<comment>Media controller element</comment>
- <translation>Film idő súrolókörte</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>Mozi idő csúszka</translation>
</message>
<message>
<location line="+2"/>
<source>Rewind movie</source>
<comment>Media controller element</comment>
- <translation>Film visszatekerése</translation>
+ <translation>Videó visszatekerése</translation>
</message>
<message>
<location line="+2"/>
<source>Return streaming movie to real-time</source>
<comment>Media controller element</comment>
- <translation>Özönlő filmek visszaadása a valós idő számára</translation>
+ <translation>Valós időbe váltás</translation>
</message>
<message>
<location line="+2"/>
<source>Current movie time</source>
<comment>Media controller element</comment>
- <translation>Az aktuális filmidő</translation>
+ <translation>Eltelt lejátszási idő</translation>
</message>
<message>
<location line="+2"/>
<source>Remaining movie time</source>
<comment>Media controller element</comment>
- <translation>Fennmaradó filmidő</translation>
+ <translation>Hátralevő lejátszási idő</translation>
</message>
<message>
<location line="+2"/>
<source>Current movie status</source>
<comment>Media controller element</comment>
- <translation>Az aktuális film státusz</translation>
+ <translation>A lejátszás állapota</translation>
</message>
<message>
<location line="+2"/>
<source>Play movie in full-screen mode</source>
<comment>Media controller element</comment>
- <translation>Film lejátszása teljes képernyős módban</translation>
+ <translation>Videó teljes képernyős lejátszása</translation>
</message>
<message>
<location line="+2"/>
<source>Seek quickly back</source>
<comment>Media controller element</comment>
- <translation>Gyorsan visszafele keresés</translation>
+ <translation>Gyors visszaugrás</translation>
</message>
<message>
<location line="+2"/>
<source>Seek quickly forward</source>
<comment>Media controller element</comment>
- <translation>Gyorsan előre keresés</translation>
+ <translation>Gyors előreugrás</translation>
</message>
<message>
<location line="+9"/>
<source>Indefinite time</source>
<comment>Media time description</comment>
- <translation>Bizonytalan idő</translation>
+ <translation>Végtelen idő</translation>
</message>
<message>
<location line="+9"/>
@@ -7334,101 +10487,108 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<translation>%1 másodperc</translation>
</message>
<message>
- <location line="-210"/>
+ <source>LTR</source>
+ <comment>Left to Right context menu item</comment>
+ <translation type="obsolete">Balról jobbra</translation>
+ </message>
+ <message>
+ <source>RTL</source>
+ <comment>Right to Left context menu item</comment>
+ <translation type="obsolete">Jobbról balra</translation>
+ </message>
+ <message>
+ <location line="-225"/>
<source>Inspect</source>
<comment>Inspect Element context menu item</comment>
- <translation>Megtekintés</translation>
+ <translation>Elemzés</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>Nincsenek utóbbi keresések</translation>
+ <translation>Nincs keresési előzmény</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>Utóbbi keresések</translation>
+ <translation>Keresési előzmények</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>Utóbbi keresések kiürítése</translation>
+ <translation>Keresési előzmények ürítése</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+90"/>
<source>Unknown</source>
<comment>Unknown filesize FTP directory listing item</comment>
<translation>Ismeretlen</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+167"/>
- <source>Web Inspector - %2</source>
- <translation>Web felügyelő - %2</translation>
- </message>
- <message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+5"/>
+ <location line="+5"/>
<source>%1 (%2x%3 pixels)</source>
<comment>Title string for images</comment>
- <translation>%1 (%2x%3 pixelek)</translation>
+ <translation>%1 (%2x%3 képpont)</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+412"/>
- <source>Bad HTTP request</source>
- <translation>Érvénytelen HTTP kérés</translation>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+253"/>
+ <source>Web Inspector - %2</source>
+ <translation>Web elemző - %2</translation>
</message>
- <message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="-291"/>
- <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>Ez egy kereshető index. Gépelje be a kívánt kulcsszavakat:</translation>
+ <message numerus="yes">
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
+ <source>%n file(s)</source>
+ <comment>number of chosen file</comment>
+ <translation>
+ <numerusform>%n fájl</numerusform>
+ </translation>
</message>
<message>
<location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+58"/>
<source>Scroll here</source>
- <translation>Görgetés ide</translation>
+ <translation>Gördítés ide</translation>
</message>
<message>
<location line="+3"/>
<source>Left edge</source>
- <translation>Bal szegély</translation>
+ <translation>Bal szélre</translation>
</message>
<message>
<location line="+0"/>
<source>Top</source>
- <translation>Felül</translation>
+ <translation>Felülre</translation>
</message>
<message>
<location line="+1"/>
<source>Right edge</source>
- <translation>Jobb szegély</translation>
+ <translation>Jobb szélre</translation>
</message>
<message>
<location line="+0"/>
<source>Bottom</source>
- <translation>Alul</translation>
+ <translation>Alulra</translation>
</message>
<message>
<location line="+3"/>
<source>Page left</source>
- <translation>Lapozás balra</translation>
+ <translation>Egy oldalt balra</translation>
</message>
<message>
<location line="+0"/>
<source>Page up</source>
- <translation>Lapozás fel</translation>
+ <translation>Egy oldalt felfelé</translation>
</message>
<message>
<location line="+1"/>
<source>Page right</source>
- <translation>Lapozás jobbra</translation>
+ <translation>Egy oldalt jobbra</translation>
</message>
<message>
<location line="+0"/>
<source>Page down</source>
- <translation>Lapozás balra</translation>
+ <translation>Egy oldalt le</translation>
</message>
<message>
<location line="+3"/>
@@ -7438,7 +10598,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+0"/>
<source>Scroll up</source>
- <translation>Görgetés fel</translation>
+ <translation>Görgetés felfelé</translation>
</message>
<message>
<location line="+1"/>
@@ -7448,200 +10608,192 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+0"/>
<source>Scroll down</source>
- <translation>Görgetés lefele</translation>
- </message>
- <message numerus="yes">
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
- <source>%n file(s)</source>
- <comment>number of chosen file</comment>
- <translation>
- <numerusform>%n fájl</numerusform>
- </translation>
+ <translation>Görgetés le</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1822"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+2033"/>
<source>JavaScript Alert - %1</source>
- <translation>JavaSzkript figyelmeztetés - %1</translation>
+ <translation>JavaScript figyelmeztetés - %1</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+17"/>
<source>JavaScript Confirm - %1</source>
- <translation>JavaSzkript megerősítés - %1</translation>
+ <translation>JavaScript megerősítés - %1</translation>
</message>
<message>
- <location line="+18"/>
+ <location line="+20"/>
<source>JavaScript Prompt - %1</source>
- <translation>JavaSzkript prompt - %1</translation>
+ <translation>JavaScript Prompt kérdés - %1</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+26"/>
<source>JavaScript Problem - %1</source>
- <translation>JavaSzkript probléma - %1</translation>
+ <translation>JavaScript probléma - %1</translation>
</message>
<message>
<location line="+0"/>
<source>The script on this page appears to have a problem. Do you want to stop the script?</source>
- <translation>Az ezen a lapon található szkriptnek úgy tűnik, hogy van egy problémája. Le szeretné állítani a szkriptet?</translation>
+ <translation>Az ezen a lapon levő parancsfájl hibásnak tűnik. Leállítja a parancsfájl futását?</translation>
</message>
<message>
- <location line="+381"/>
+ <location line="+395"/>
<source>Move the cursor to the next character</source>
- <translation>Az egér mozgatása a következő karakterre</translation>
+ <translation>Tegye a kurzort a következő karakterhez</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the previous character</source>
- <translation>Az egér mozgatása az előző karakterre</translation>
+ <translation>Tegye a kurzort az előző karakterhez</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the next word</source>
- <translation>Az egér mozgatása a következő szóra</translation>
+ <translation>Tegye a kurzort a következő szóhoz</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the previous word</source>
- <translation>Az egér mozgatása az előző szóra</translation>
+ <translation>Tegye a kurzort az előző szóhoz</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the next line</source>
- <translation>Az egér mozgatása a következő sorra</translation>
+ <translation>Tegye a kurzort a következő sorba</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the previous line</source>
- <translation>Az egér mozgatása az előző sorra</translation>
+ <translation>Tegye a kurzort az előző sorba</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the start of the line</source>
- <translation>Az egér mozgatása a sor elejére</translation>
+ <translation>Tegye a kurzort a sor elejére</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the end of the line</source>
- <translation>Az egér mozgatása a sor végére</translation>
+ <translation>Tegye a kurzort a sor végére</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the start of the block</source>
- <translation>Az egér mozgatása a blokk elejére</translation>
+ <translation>Tegye a kurzort a blokk elejére</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the end of the block</source>
- <translation>Az egér mozgatása a blokk végére</translation>
+ <translation>Tegye a kurzort a blokk végére</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the start of the document</source>
- <translation>Az egér mozgatása a dokumentum elejére</translation>
+ <translation>Tegye a kurzort a dokumentum elejére</translation>
</message>
<message>
<location line="+3"/>
<source>Move the cursor to the end of the document</source>
- <translation>Az egér mozgatása a dokumentum végére</translation>
+ <translation>Tegye a kurzort a dokumentum végére</translation>
</message>
<message>
<location line="+3"/>
<source>Select all</source>
- <translation>Az összes kiválasztása</translation>
+ <translation>Összes kijelölése</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the next character</source>
- <translation>A következő karakter kiválasztása</translation>
+ <translation>Kijelölés a következő karakterig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the previous character</source>
- <translation>Az előző karakter kiválasztása</translation>
+ <translation>Kijelölés az előző karakterig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the next word</source>
- <translation>A következő szó kiválasztása</translation>
+ <translation>Kijelölés a következő szóig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the previous word</source>
- <translation>Az előző szó kiválasztása</translation>
+ <translation>Kijelölés az előző szóig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the next line</source>
- <translation>A következő sor kiválasztása</translation>
+ <translation>Kijelölés a következő sorig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the previous line</source>
- <translation>Az előző sor kiválasztása</translation>
+ <translation>Kijelölés az előző sorig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the start of the line</source>
- <translation>A sor elejének kiválasztása</translation>
+ <translation>Kijelölés a sor elejéig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the end of the line</source>
- <translation>A sor végének kiválasztása</translation>
+ <translation>Kijelölés a sor végéig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the start of the block</source>
- <translation>A blokk elejének kiválsztása</translation>
+ <translation>Kijelölés a blokk elejéig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the end of the block</source>
- <translation>A blokk végének kiválasztása</translation>
+ <translation>Kijelölés a blokk végéig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the start of the document</source>
- <translation>A dokumentum elejének kiválasztása</translation>
+ <translation>Kijelölés a dokumentum elejéig</translation>
</message>
<message>
<location line="+3"/>
<source>Select to the end of the document</source>
- <translation>A dokumentum végének kiválasztása</translation>
+ <translation>Kijelölés a dokumentum végéig</translation>
</message>
<message>
<location line="+3"/>
<source>Delete to the start of the word</source>
- <translation>A szó elejének törlése</translation>
+ <translation>Törlés a szó elejéig</translation>
</message>
<message>
<location line="+3"/>
<source>Delete to the end of the word</source>
- <translation>A szó végének törlése</translation>
+ <translation>Törlés a szó végéig</translation>
</message>
<message>
<location line="+33"/>
<source>Insert a new paragraph</source>
- <translation>Egy új bekezdés beszúrása</translation>
+ <translation>Új bekezdés beszúrása</translation>
</message>
<message>
<location line="+3"/>
<source>Insert a new line</source>
- <translation>Egy új sor beszúrása</translation>
+ <translation>Új sor beszúrása</translation>
</message>
<message>
<location line="+4"/>
<source>Paste and Match Style</source>
- <translation>Stílus beillesztése és összepasszintása</translation>
+ <translation>Beillesztés stílusegyeztetéssel</translation>
</message>
<message>
<location line="+3"/>
<source>Remove formatting</source>
- <translation>Formázás eltávolítása</translation>
+ <translation>A formázás törlése</translation>
</message>
<message>
<location line="+4"/>
<source>Strikethrough</source>
- <translation>Áthúzás</translation>
+ <translation>Áthúzva</translation>
</message>
<message>
<location line="+4"/>
@@ -7656,7 +10808,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+4"/>
<source>Insert Bulleted List</source>
- <translation>Hivatalos közlemény lista beszúrása</translation>
+ <translation>Pontozott lista beszúrása</translation>
</message>
<message>
<location line="+4"/>
@@ -7666,32 +10818,32 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+4"/>
<source>Indent</source>
- <translation>Behúzás</translation>
+ <translation>Behúzás növelése</translation>
</message>
<message>
<location line="+3"/>
<source>Outdent</source>
- <translation>Behúzás kifelé</translation>
+ <translation>Behúzás csökkentése</translation>
</message>
<message>
<location line="+3"/>
<source>Center</source>
- <translation>Közép</translation>
+ <translation>Középre igazítás</translation>
</message>
<message>
<location line="+3"/>
<source>Justify</source>
- <translation>Igazolás</translation>
+ <translation>Sorkizárás</translation>
</message>
<message>
<location line="+3"/>
<source>Align Left</source>
- <translation>Balra állít</translation>
+ <translation>Balra igazítás</translation>
</message>
<message>
<location line="+3"/>
<source>Align Right</source>
- <translation>Jobbra állít</translation>
+ <translation>Jobbra igazítás</translation>
</message>
</context>
<context>
@@ -7705,7 +10857,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5720"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5802"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -7713,12 +10865,31 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+661"/>
- <source>Cancel</source>
- <translation>Mégse</translation>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+689"/>
+ <source>Go Back</source>
+ <translation>Visszalépés</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Continue</source>
+ <translation>Folytatás</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Commit</source>
+ <translation>Véglegesítés</translation>
</message>
<message>
<location line="+2"/>
+ <source>Done</source>
+ <translation>Kész</translation>
+ </message>
+ <message>
+ <source>Quit</source>
+ <translation type="obsolete">Kilépés</translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>Help</source>
<translation>Súgó</translation>
</message>
@@ -7733,32 +10904,17 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<translation>&amp;Befejezés</translation>
</message>
<message>
- <location line="+4"/>
- <source>&amp;Help</source>
- <translation>&amp;Súgó</translation>
- </message>
- <message>
- <location line="-14"/>
- <source>Go Back</source>
- <translation>Vissza ugrás</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Continue</source>
- <translation>Folytatás</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>Commit</source>
- <translation>Kommit</translation>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation>Mégsem</translation>
</message>
<message>
<location line="+2"/>
- <source>Done</source>
- <translation>Kész</translation>
+ <source>&amp;Help</source>
+ <translation>&amp;Súgó</translation>
</message>
<message>
- <location line="-4"/>
+ <location line="-8"/>
<source>&amp;Next</source>
<translation>&amp;Következő</translation>
</message>
@@ -7778,7 +10934,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>&amp;Move</source>
- <translation>&amp;Mozgatás</translation>
+ <translation>Á&amp;thelyezés</translation>
</message>
<message>
<location line="+1"/>
@@ -7788,12 +10944,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+2"/>
<source>Mi&amp;nimize</source>
- <translation>&amp;Minimalizálás</translation>
+ <translation>&amp;Kis méret</translation>
</message>
<message>
<location line="+2"/>
<source>Ma&amp;ximize</source>
- <translation>Ma&amp;ximalizálás</translation>
+ <translation>Te&amp;ljes méret</translation>
</message>
<message>
<location line="+2"/>
@@ -7803,17 +10959,29 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+6"/>
<source>Stay on &amp;Top</source>
- <translation>&amp;Tetején maradni</translation>
+ <translation>Mindig leg&amp;felül</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location line="+1059"/>
+ <source>Sh&amp;ade</source>
+ <translation>&amp;Felcsukás</translation>
</message>
<message>
- <location line="-988"/>
+ <location line="-278"/>
+ <location line="+60"/>
+ <source>%1 - [%2]</source>
+ <translation>%1 - [%2]</translation>
+ </message>
+ <message>
+ <location line="-1832"/>
<source>Minimize</source>
- <translation>Minimalizálás</translation>
+ <translation>Kis méret</translation>
</message>
<message>
<location line="+2"/>
<source>Restore Down</source>
- <translation>Letárolás</translation>
+ <translation>Előző méret</translation>
</message>
<message>
<location line="-4"/>
@@ -7821,21 +10989,9 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<translation>Bezárás</translation>
</message>
<message>
- <location line="+993"/>
- <location line="+1059"/>
- <source>Sh&amp;ade</source>
- <translation>Árnya&amp;lat</translation>
- </message>
- <message>
- <location line="-278"/>
- <location line="+60"/>
- <source>%1 - [%2]</source>
- <translation>%1 - [%2]</translation>
- </message>
- <message>
- <location line="+214"/>
+ <location line="+2048"/>
<source>&amp;Unshade</source>
- <translation>&amp;Leeresztés</translation>
+ <translation>&amp;Lenyitás</translation>
</message>
</context>
<context>
@@ -7848,32 +11004,32 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>error triggered by consumer</source>
- <translation>Ügyfél által előidézett hiba</translation>
+ <translation>feldolgozó által kiváltott hiba</translation>
</message>
<message>
<location line="+1"/>
<source>unexpected end of file</source>
- <translation>Váratlan fájlvég</translation>
+ <translation>váratlan fájlvég</translation>
</message>
<message>
<location line="+1"/>
<source>more than one document type definition</source>
- <translation>Több mint egy dokumentum típus definíció</translation>
+ <translation>több dokumentumtípus definíció</translation>
</message>
<message>
<location line="+1"/>
<source>error occurred while parsing element</source>
- <translation>Hiba történt az elem elemzése közben</translation>
+ <translation>hiba az elem értelmezésénél</translation>
</message>
<message>
<location line="+1"/>
<source>tag mismatch</source>
- <translation>Nem egyező címke</translation>
+ <translation>eltérő tag hiba</translation>
</message>
<message>
<location line="+1"/>
<source>error occurred while parsing content</source>
- <translation>Hiba történt a tartalom elemzése közben</translation>
+ <translation>hiba a tartalom értelmezésénél</translation>
</message>
<message>
<location line="+1"/>
@@ -7883,77 +11039,77 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+1"/>
<source>invalid name for processing instruction</source>
- <translation>érvénytelen név az utasítás feldolgozására</translation>
+ <translation>érvénytelen feldolgozási utasítás név</translation>
</message>
<message>
<location line="+1"/>
<source>version expected while reading the XML declaration</source>
- <translation>várt verzió az XML deklaráció olvasása közben</translation>
+ <translation>az XML deklaráció nem tartalmaz verzióinformációt</translation>
</message>
<message>
<location line="+1"/>
<source>wrong value for standalone declaration</source>
- <translation>Hibás egyedülálló deklaráció érték</translation>
+ <translation>érvénytelen érték önálló deklarációban</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+1"/>
+ <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
+ <translation>az XML deklarációból hiányzik a kódolási információ vagy egy önálló deklaráció</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>standalone declaration expected while reading the XML declaration</source>
+ <translation>az XML deklarációból hiányzik az önálló deklaráció</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>error occurred while parsing document type definition</source>
- <translation>Hiba történt a dokumentum típus definíció elemzése közben</translation>
+ <translation>hiba a dokumentumtípus definíció értelmezésénél</translation>
</message>
<message>
<location line="+1"/>
<source>letter is expected</source>
- <translation>betű várt</translation>
+ <translation>a várt elem betű</translation>
</message>
<message>
<location line="+1"/>
<source>error occurred while parsing comment</source>
- <translation>hiba történt az elemző megjegyzés előfordulása közben</translation>
+ <translation>hiba a megjegyzés értelmezésénél</translation>
</message>
<message>
<location line="+1"/>
<source>error occurred while parsing reference</source>
- <translation>Hiba történt az elemző hivatkozás előfordulása közben</translation>
+ <translation>hiba a hivatkozás értelmezésénél</translation>
</message>
<message>
<location line="+1"/>
<source>internal general entity reference not allowed in DTD</source>
- <translation>A DTD-ben nem engedélyezett a belső általános valós hivatkozás</translation>
+ <translation>A DTD-ben nem engedélyezett belső általános entitás használata</translation>
</message>
<message>
<location line="+1"/>
<source>external parsed general entity reference not allowed in attribute value</source>
- <translation>Az attribútum értékben nem engedélyezett a külsőleg elemzett általános valós hivatkozás</translation>
+ <translation>külső feldolgozású általános entitáshivatkozás nem engedélyezett attribútum értékében</translation>
</message>
<message>
<location line="+1"/>
<source>external parsed general entity reference not allowed in DTD</source>
- <translation>A DTD-ben nem engedélyezett a külsőleg elemzett általános valós hivatkozás</translation>
+ <translation>külső feldolgozású általános entitáshivatkozás nem engedélyezett a DTD-ben</translation>
</message>
<message>
<location line="+1"/>
<source>unparsed entity reference in wrong context</source>
- <translation>Hivatkozás egy nem értelmezett entitásra hibás összefüggésben</translation>
+ <translation>nem értelmezett entitás referencia egy rossz kontextusban</translation>
</message>
<message>
<location line="+1"/>
<source>recursive entities</source>
- <translation>Rekurzív entitások</translation>
+ <translation>rekurzív entitások</translation>
</message>
<message>
<location line="+1"/>
<source>error in the text declaration of an external entity</source>
- <translation>Hiba egy külső entitás szöveg deklarációjában</translation>
- </message>
- <message>
- <location line="-11"/>
- <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
- <translation>Kódolása deklaráció vagy egyedülálló deklaráció várt az XML deklaráció olvasása közben</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>standalone declaration expected while reading the XML declaration</source>
- <translation>Egyedülálló deklaráció várt az XML deklaráció olvasása közben</translation>
+ <translation>hiba egy külső entitás szövegdeklarációjában</translation>
</message>
</context>
<context>
@@ -7961,27 +11117,27 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location filename="../src/xmlpatterns/api/qcoloringmessagehandler.cpp" line="+87"/>
<source>Warning in %1, at line %2, column %3: %4</source>
- <translation>Figyelmeztetés %1-ben, %2 sorban, %3 oszlopban: %4</translation>
+ <translation>Figyelmeztetés a(z) %1 helyen, sor %2, oszlop %3: %4</translation>
</message>
<message>
<location line="+7"/>
<source>Warning in %1: %2</source>
- <translation>Figyelmeztetés %1-ben: %2</translation>
+ <translation>Figyelmeztetés a(z) %1 helyen: %2</translation>
</message>
<message>
<location line="+16"/>
<source>Unknown location</source>
- <translation>Ismeretlen elhelyezkedés</translation>
+ <translation>Ismeretlen hely</translation>
</message>
<message>
<location line="+14"/>
<source>Error %1 in %2, at line %3, column %4: %5</source>
- <translation>%1 hiba %2-ben, %3 sorban, %4 oszlopban: %5</translation>
+ <translation>%1 hiba a(z) %2 %3. sorának %4. oszlopában: %5</translation>
</message>
<message>
<location line="+8"/>
<source>Error %1 in %2: %3</source>
- <translation>%1 hiba %2-ben: %3</translation>
+ <translation>%1 hiba a(z) %2 helyen: %3</translation>
</message>
</context>
<context>
@@ -7990,7 +11146,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location filename="../src/corelib/xml/qxmlstream.cpp" line="+611"/>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="+1770"/>
<source>Extra content at end of document.</source>
- <translation>Extra tartalom a dokumentum végén.</translation>
+ <translation>Nem várt tartalom a dokumentum végén.</translation>
</message>
<message>
<location line="+271"/>
@@ -8005,22 +11161,22 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+259"/>
<source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
- <translation>&apos;]]&gt;&apos; sor nem engedélyezett a tartalomban.</translation>
+ <translation>&apos;]]&gt;&apos; szekvencia nem megengedett a tartalomban.</translation>
</message>
<message>
<location line="+309"/>
<source>Namespace prefix &apos;%1&apos; not declared</source>
- <translation>&apos;%1&apos; névtér előtag nincsen deklarálva</translation>
+ <translation>A(z) &apos;%1&apos; névtér prefixum nincs deklarálva</translation>
</message>
<message>
<location line="+78"/>
<source>Attribute redefined.</source>
- <translation>Attribútum újradefiniálva.</translation>
+ <translation>Az attributum újra lett definiálva.</translation>
</message>
<message>
<location line="+115"/>
<source>Unexpected character &apos;%1&apos; in public id literal.</source>
- <translation>Váratlan karakter &apos;%1&apos; a publikus azonosító literál.</translation>
+ <translation>Váratlan &apos;%1&apos; karakter a publikus id literálban.</translation>
</message>
<message>
<location line="+28"/>
@@ -8035,17 +11191,17 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+23"/>
<source>%1 is an invalid encoding name.</source>
- <translation>%1 egy érvénytelen kódolási név.</translation>
+ <translation>%1 nem egy érvényes kódolás név.</translation>
</message>
<message>
<location line="+7"/>
<source>Encoding %1 is unsupported</source>
- <translation>%1 kódolás nem támogatva</translation>
+ <translation>%1 kódolás nem támogatott</translation>
</message>
<message>
<location line="+16"/>
<source>Standalone accepts only yes or no.</source>
- <translation>Egyedülálló elfogadás kizárólas igen vagy nem.</translation>
+ <translation>Csak igen vagy nem lehet az értéke.</translation>
</message>
<message>
<location line="+2"/>
@@ -8055,7 +11211,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+16"/>
<source>Premature end of document.</source>
- <translation>Túl korai dokumentum vég.</translation>
+ <translation>A dokumentum hirtelen véget ért.</translation>
</message>
<message>
<location line="+2"/>
@@ -8065,12 +11221,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+40"/>
<source>Expected </source>
- <translation>Várt</translation>
+ <translation>Várt </translation>
</message>
<message>
<location line="+11"/>
<source>, but got &apos;</source>
- <translation>, pedig megkapta &apos;</translation>
+ <translation>, de ezt kaptam: &apos;</translation>
</message>
<message>
<location line="+4"/>
@@ -8080,37 +11236,37 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+225"/>
<source>Expected character data.</source>
- <translation>Várt karakter adat.</translation>
+ <translation>Karakteres adat szükséges.</translation>
</message>
<message>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="-995"/>
<source>Recursive entity detected.</source>
- <translation>Rekurzív entitás észlelve.</translation>
+ <translation>Rekurzív entitást találtam.</translation>
</message>
<message>
<location line="+516"/>
<source>Start tag expected.</source>
- <translation>Kezdő címke várva.</translation>
+ <translation>Kezdő tag szükséges.</translation>
</message>
<message>
<location line="+222"/>
<source>XML declaration not at start of document.</source>
- <translation>XML deklaráció nem a dokumentum elején található.</translation>
+ <translation>Az XML deklaráció nem a dokumentum elején kezdődik.</translation>
</message>
<message>
<location line="-31"/>
<source>NDATA in parameter entity declaration.</source>
- <translation>NDATA a paraméter entitás deklarációban.</translation>
+ <translation>NDATA a paraméter-entitás deklarációjában.</translation>
</message>
<message>
<location line="+34"/>
<source>%1 is an invalid processing instruction name.</source>
- <translation>%1 egy érvénytelen feldolgozó utasítás neve.</translation>
+ <translation>%1 érvénytelen feldolgozási utasítás név.</translation>
</message>
<message>
<location line="+11"/>
<source>Invalid processing instruction name.</source>
- <translation>Érvénytelen feldolgozó utasítás név.</translation>
+ <translation>Érvénytelen feldolgozási utasítás név.</translation>
</message>
<message>
<location filename="../src/corelib/xml/qxmlstream.cpp" line="-536"/>
@@ -8118,7 +11274,7 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="+164"/>
<location line="+53"/>
<source>Illegal namespace declaration.</source>
- <translation>Illegális névtér deklarációk.</translation>
+ <translation>Érvénytelen névtér deklaráció.</translation>
</message>
<message>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="+15"/>
@@ -8128,287 +11284,63 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+23"/>
<source>Opening and ending tag mismatch.</source>
- <translation>Nyitó és záró címkék nem egyeznek.</translation>
+ <translation>A nyitó és a záró tag nem egyezik.</translation>
</message>
<message>
<location line="+18"/>
<source>Reference to unparsed entity &apos;%1&apos;.</source>
- <translation>Hivatkozás egy nem értelmezett entitásra &apos;%1&apos;.</translation>
+ <translation>Hivatkozás egy nem értelmezett entitásra: &apos;%1&apos;.</translation>
</message>
<message>
<location line="-13"/>
<location line="+61"/>
<location line="+40"/>
<source>Entity &apos;%1&apos; not declared.</source>
- <translation>&apos;%1&apos; entitás nincsen deklarálva.</translation>
+ <translation>&apos;%1&apos; entitás nincs deklarálva.</translation>
</message>
<message>
<location line="-26"/>
<source>Reference to external entity &apos;%1&apos; in attribute value.</source>
- <translation>Hivatkozás egy külső entitásra &apos;%1&apos; az attribútum értékben.</translation>
+ <translation>Hivatkozás &apos;%1&apos; külső entitásra attribútum értékben.</translation>
</message>
<message>
<location line="+40"/>
<source>Invalid character reference.</source>
- <translation>Érvénytelen karakter hivatkozás.</translation>
+ <translation>Érvénytelen karakterhivatkozás.</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>Helytelen kódolási tartalommal találta szembe magát.</translation>
+ <translation>Hibás kódolású tartalom.</translation>
</message>
<message>
<location line="+274"/>
<source>The standalone pseudo attribute must appear after the encoding.</source>
- <translation>Az egyedülálló ál attribútumnak a kódolás után kell feltűnnie.</translation>
+ <translation>Az egyedülálló pszeudo-attribútumnak a kódolás után kell szerepelnie.</translation>
</message>
<message>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="+562"/>
<source>%1 is an invalid PUBLIC identifier.</source>
- <translation>%1 egy érvénytelen PUBLIC-us azonosító.</translation>
+ <translation>%1 egy érvénytelen PUBLIC azonosító.</translation>
</message>
</context>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
- <location line="+15"/>
- <source>At least one component must be present.</source>
- <translation>Legalább egy komponenset be kell nyújtani.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
- <source>%1 is not a valid value of type %2.</source>
- <translation>%1 nem egy érvény értéke a(z) %2 típusnak.</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>A(z) %1-ről %2-re történő kasztoláskor, a forrás érték nem lehet %3.</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>Hatékony logikai értéket nem lehet egy sor számára kiszámítani, amely kettő vagy több atomikus értéket tartalmaz.</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>Egy feldolgozó utasítás adata nem tartalmazhat %1 sztringet</translation>
- </message>
- <message>
- <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 egy érvénytelen %2</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
- <source>%1 is not a valid XML 1.0 character.</source>
- <translation>%1 egy érvénytelen 1.0 XML karakter.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
- <source>%1 was called.</source>
- <translation>%1 lett meghívva.</translation>
- </message>
- <message>
- <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>A kicserélési sztrinben, %1 -t legalább egy számnak kell követnie nem meneküléskor.</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>A kicserelési sztringben, %1-t csak magának a(z) %2 vagy %3 menekülésére lehet használni</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
- <source>%1 matches newline characters</source>
- <translation>%1 megegyező újsor karakterek</translation>
- </message>
- <message>
- <location line="+10"/>
- <source>Matches are case insensitive</source>
- <translation>Az egyezés kis és nagybetűre nem érzékeny</translation>
- </message>
- <message>
- <location line="+104"/>
- <source>%1 is an invalid regular expression pattern: %2</source>
- <translation>%1 egy érvénytelen reguláris kifejezés minta: %2</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
- <source>It will not be possible to retrieve %1.</source>
- <translation>Nem lesz lehetséges kinyerni %1.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+266"/>
- <source>The default collection is undefined</source>
- <translation>Az alapértelmezett gyűjtemény nincs definiálva</translation>
- </message>
- <message>
- <location line="+13"/>
- <source>%1 cannot be retrieved</source>
- <translation>%1 nem lehet megszerezni</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>A(z) %1 elem nem egyezik a szükséges típussal %2.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+352"/>
- <location line="+7323"/>
- <source>%1 is an unknown schema type.</source>
- <translation>%1 egy ismeretlen terv típus.</translation>
- </message>
- <message>
- <location line="-7254"/>
- <source>A template with name %1 has already been declared.</source>
- <translation>Egy %1 nevű sablon már deklarálva van.</translation>
- </message>
- <message>
- <location line="+213"/>
- <source>Only one %1 declaration can occur in the query prolog.</source>
- <translation>Kizárólag egy %1 deklaráció fordulhat elő a kérdéses előszóban.</translation>
- </message>
- <message>
- <location line="+188"/>
- <source>The initialization of variable %1 depends on itself</source>
- <translation>A(z) %1 változó inicializálása önmagától függ</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
- <source>The variable %1 is unused</source>
- <translation>A(z) %1 változó nincsen használva</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2904"/>
- <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
- <translation>%1-es verzió nem támogatott. A támogatott XQuery verzió az 1.0.</translation>
- </message>
- <message>
- <location line="+71"/>
- <source>No function with signature %1 is available</source>
- <translation>Nincs %1 aláírással rendelkező függvény</translation>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+344"/>
+ <source>%1 is an unsupported encoding.</source>
+ <translation>%1 nem támogatott kódolás.</translation>
</message>
<message>
- <location line="+303"/>
- <source>It is not possible to redeclare prefix %1.</source>
- <translation>Nem lehetséges a(z) %1 előtag újradeklarálása.</translation>
+ <location line="+16"/>
+ <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
+ <translation>%1 olyan okteteket tartalmaz, amelyek nem megengedettek a kért %2 kódolásban.</translation>
</message>
<message>
<location line="+18"/>
- <source>Prefix %1 is already declared in the prolog.</source>
- <translation>%1 előtag már deklarálva van az előszóban.</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>Az opció nevének tartalmaznia kell egy előtagot. Nincs alapértelmezett névtér ezekre az opciókra.</translation>
- </message>
- <message>
- <location line="+171"/>
- <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
- <translation>A terv importálása tulajdonság nem támogatott, és ennek következtében a(z) %1 deklarációk nem fordulhatnak elő.</translation>
- </message>
- <message>
- <location line="+13"/>
- <source>The target namespace of a %1 cannot be empty.</source>
- <translation>Egy %1 cél névtere nem lehet üres.</translation>
- </message>
- <message>
- <location line="+8"/>
- <source>The module import feature is not supported</source>
- <translation>A modul importáló tulajdonság nem támogatott</translation>
- </message>
- <message>
- <location line="+178"/>
- <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>Egy felhasználó által definiált függvény névterének egy könyvtár modulban megfelelőnek kell lenni a modul névtérrel. Más szóval, %1-nek kellene lennie %2 helyett</translation>
- </message>
- <message>
- <location line="+34"/>
- <source>A function already exists with the signature %1.</source>
- <translation>Egy függvény már létezik ezzel az aláírással %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>Kulső függvények nincsenek támogatva. Az összes támogatott függvényt lehet közvetlenül haszálni, az első külső deklarálásuk nélkül</translation>
- </message>
- <message>
- <location line="+1709"/>
- <source>The %1-axis is unsupported in XQuery</source>
- <translation>A(z) %1 tengely nem támogatott az XQuery-ben</translation>
- </message>
- <message>
- <location line="+435"/>
- <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
- <translation>Az URI névtér nem lehet üres sztring egy előtaghoz való összeköttetéskor, %1.</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>%1 is an invalid namespace URI.</source>
- <translation>%1 egy érvénytelen URI névtér.</translation>
- </message>
- <message>
- <location line="+6"/>
- <source>It is not possible to bind to the prefix %1</source>
- <translation>Nem lehetséges a(z) %1 előtaggal összekötni</translation>
- </message>
- <message>
- <location line="+30"/>
- <source>Two namespace declaration attributes have the same name: %1.</source>
- <translation>Két névtér deklaráció attribútumnak ugyanaz a neve: %1.</translation>
- </message>
- <message>
- <location line="+89"/>
- <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
- <translation>Az URI névtérnek állandónak kell lennie és nem használhat elhatárolt kifejezéseket.</translation>
- </message>
- <message>
- <location line="+699"/>
- <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 nem a hatókör attribútum deklarációin belül található. Vegye figyelembe, hogy a terv importáló tulajdonság nem támogatott.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
- <source>empty</source>
- <translation>üres</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>zero or one</source>
- <translation>nulla vagy egy</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>exactly one</source>
- <translation>pontosan egy</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>one or more</source>
- <translation>egy vagy több</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>zero or more</source>
- <translation>nulla vagy több</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+156"/>
- <source>The focus is undefined.</source>
- <translation>A fókusz nincs definiálva.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+93"/>
- <source>An attribute by name %1 has already been created.</source>
- <translation>Egy %1 nevű attribútum már létre lett hozva.</translation>
+ <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
+ <translation>%1 kódrészlet %2 helyen, %3 kódolással érvénytelen XML karakter.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
@@ -8418,7 +11350,12 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<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>%1 elemet nem lehet besorolni, mert úgy tűnik a dokumentum elem külső oldalán található.</translation>
+ <translation>%1 elem nem szerializálható, mert a document elemen kívül szerepel.</translation>
+ </message>
+ <message>
+ <location line="+60"/>
+ <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
+ <translation>%1 attribútum nem szerializálható, mert legfelső szinten szerepel.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
@@ -8428,893 +11365,1127 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+19"/>
<source>Day %1 is outside the range %2..%3.</source>
- <translation>%1 nap a tartomány külsp oldalán van %2..%3.</translation>
+ <translation>A(z) %1. nap nem esik %2 és %3 közé.</translation>
</message>
<message>
<location line="+7"/>
<source>Month %1 is outside the range %2..%3.</source>
- <translation>%1 hónap a tartomány külső felületén van %2..%3.</translation>
+ <translation>A(z) %1. hónap nem esik %2 és %3 közé.</translation>
</message>
<message>
<location line="+10"/>
<source>Overflow: Can&apos;t represent date %1.</source>
- <translation>Túlcsordulás: Nem lehet feltünteti a(z) %1 dátumot.</translation>
+ <translation>Túlcsordulás: A(z) %1 dátum nem reprezentálható.</translation>
</message>
<message>
<location line="+9"/>
<source>Day %1 is invalid for month %2.</source>
- <translation>%1 nap érvénytelen a(z) %2 hónapra vonatkozólag.</translation>
+ <translation>Nincs %1 nap %2 hónapban.</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>Idő 24:%1:%2:%3 érvénytelen. Az óra 24, de a perc, másodperc, és milliszekundum egyáltalán nem 0; </translation>
+ <translation>Az 24:%1:%2.%3 időpont érvénytelen, mert az óra értéke 24, de a többi érték nem 0; </translation>
</message>
<message>
<location line="+13"/>
<source>Time %1:%2:%3.%4 is invalid.</source>
- <translation>Idő %1:%2:%3.%4 érvénytelen.</translation>
+ <translation>Az %1:%2:%3.%4 időpont érvénytelen.</translation>
</message>
<message>
<location line="+115"/>
<source>Overflow: Date can&apos;t be represented.</source>
- <translation>Túlcsordulás: A dátumot nem lehet feltüntetni.</translation>
+ <translation>Túlcsordulás: A dátum nem reprezentálható.</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>Legalább egy komponenst meg kell adni.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="-7"/>
+ <location line="-7"/>
<source>At least one time component must appear after the %1-delimiter.</source>
- <translation>Legalább egy idő komponensnek lennie kell a(z) %1 határolójel után.</translation>
+ <translation>Legalább egy időkomponenst meg kell adni a(z) %1 elválasztó után.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
+ <source>%1 is not a valid value of type %2.</source>
+ <translation>%1 nem érvényes %2 típusú érték.</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>Ha %2-t %1-re kényszerítünk, a kiinduló érték nem lehet %3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
+ <source>Integer division (%1) by zero (%2) is undefined.</source>
+ <translation>A nullával (%2) való egészosztás (%1) nincs értelmezve.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Division (%1) by zero (%2) is undefined.</source>
+ <translation>A nullával (%2) való osztás (%1) nincs értelmezve.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+201"/>
+ <location line="+7"/>
+ <source>Modulus division (%1) by zero (%2) is undefined.</source>
+ <translation>A nullával (%2) való maradékos osztás (%1) nincs értelmezve.</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 típus értékének osztása egy %2(nem szám)-mal nem engedélyezett.</translation>
+ <translation>%1 típusú érték %2-vel osztása nem megengedett, mert az nem szám.</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 típus értékének osztása egy %2 vagy %3(plusz vagy minusz nulla)-mal nem engedélyezett.</translation>
+ <translation>%1 típusú érték osztása %2 vagy %3 (pozitív vagy negatív nulla) értékkel nem megengedett.</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 típusú érték %2 vagy %3-mal való szorzása(plusz vagy minusz végtelen) nem engedélyezett.</translation>
+ <translation>%1 típusú érték szorzása %2 vagy %3 (pozitív vagy negatív végtelen) típusú értékkel nem megengedett.</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>%1 típusú értéknek nincsen hatékony logikai értéke.</translation>
+ <translation>%1 típusú érték nem kaphat effektív logikai értéket.</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>Effektív logikai érték nem számítható olyan sorozatra, melyben kettő vagy több atomi érték szerepel.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
- <translation>%2 típus %1 értéke elérte a maxiumot (%3).</translation>
+ <translation>A(z) %2 típusú %1 érték meghaladja a maximumot (%3).</translation>
</message>
<message>
<location line="+9"/>
<source>Value %1 of type %2 is below minimum (%3).</source>
- <translation>%1 típus %2 értéke a minimum alatt van (%3).</translation>
+ <translation>A(z) %2 típusú %1 érték kisebb, mint a minimum (%3).</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>%1 típus értékének tartalmaznia kell egy páratlan számú számot. A(z) %2 érték nem.</translation>
+ <translation>%1 típusú értékben páros számú számjegynek kell szerepelnie. A(z) %2 érték nem megfelelő.</translation>
</message>
<message>
<location line="+19"/>
<source>%1 is not valid as a value of type %2.</source>
- <translation>%1 érvénytelen %2 típusú értékként.</translation>
+ <translation>%1 nem érvényes %2 típusú érték.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
+ <source>Ambiguous rule match.</source>
+ <translation>Nem egyértelmű szabály illeszkedés.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
- <translation>%1 műveletet nem lehet a(z) %2 típuson használni.</translation>
+ <translation>%1 operátor nem használható %2 típuson.</translation>
</message>
<message>
<location line="+17"/>
<source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
- <translation>%1 műveletet nem lehet a %2 és %3-as típusú atomikus értéken használni.</translation>
+ <translation>%1 operátor nem használható %2 és %3 típusok atomi értékein.</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>Az URI névtér a névben számított attribútumra nem lehet %1.</translation>
+ <translation>Egy számított attribútum nevében szereplő névtér URI-je nem lehet %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>Egy kiszámított attribútumnak nem lehet %1 URI névtere %2 helyi névvel.</translation>
+ <translation>Számított attribútum neve nem szerepelhet %1 névtér URI-ben %2 lokális névvel.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
- <translation>Típus hiba a kasztolásban, %1 várt, %2 kapott.</translation>
+ <translation>Típushiba a kényszerítés során, várt %1, kapott %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-re kasztoláskor vagy típus származtatáskor, a forrás értéknek ugyanolyan típusúnak kell lennie, vagy sztring literálnak kell lennie. %2 típus nem engedélyezett.</translation>
+ <translation>%1 vagy belőle származó típusra való kényszerítéskor a kiindulási értéknek azonos típusúnak vagy sztring literálnak kell lennie. %2 típus nem megengedett.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
- <translation>A megjegyzés nem tartalmazhat %1-t</translation>
+ <translation>Megjegyzésben nem szerepelhet %1</translation>
</message>
<message>
<location line="+6"/>
<source>A comment cannot end with a %1.</source>
- <translation>A megjegyzés nem végződget %1-gyel.</translation>
+ <translation>Egy megjegyzés nem végződhet a következőre: %1.</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>Egy névtér konstruktorában a névtér értéke nem lehet üres karaktersorozat.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>The prefix must be a valid %1, which %2 is not.</source>
+ <translation>A prefixum érvényes %1 kell legyen, aminek %2 nem tesz eleget.</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>The prefix %1 cannot be bound.</source>
+ <translation>%1 prefixum nem köthető.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
+ <translation>Csak %1 prefixum köthető %2 kifejezéshez és fordítva.</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>Az attribútum csomópont egy dokumentum csomópont gyermeke. Ennek következtében a(z) %1 attribútum nem helyénvaló.</translation>
+ <translation>Attribútum csomópont nem lehet egy document csomópont gyermeke. Emiatt a(z) %1 attribútum nem ide való.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+162"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
- <translation>A köbyvtár modult nem lehet közvetlenül kiértékelni. A fő modulból kell importálni.</translation>
+ <translation>Egy könyvtár modult nem lehet közvetlenül kiértékelni. Mindenképp egy fő modulból kell importálni.</translation>
</message>
<message>
<location line="+40"/>
<source>No template by name %1 exists.</source>
- <translation>%1 nevű sablon nem létezik.</translation>
+ <translation>Nem létezik %1 nevű sablon.</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>A(z) %1 típus értéke egy állítmány. Egy állítmánynak tartalmaznia kell vagy egy szám típust vagy egy effektív logikai érték típust.</translation>
+ <translation>Egy %1 típusú érték nem lehet predikátum. Egy predikátumnak szám vagy effektív logikai érték típusúnak kell lennie.</translation>
</message>
<message>
<location line="+32"/>
<source>A positional predicate must evaluate to a single numeric value.</source>
- <translation>A helyzet állítmányt egy egyetlen szám értékként kell kiértékelni.</translation>
+ <translation>Egy pozicionális predikátumnak egyetlen numerikus értékké kell kiértékelődnie.</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, %2 is invalid.</source>
- <translation>A cél neve egy utasítás feldolgozásban nem lehet %1 kis és nagybetűk bármely kombinációjában. Ennek következtében a(z) %2 érvénytelen.</translation>
+ <translation>Feldolgozási utasításban a célnév nem lehet %1 semmilyen kis- vagy nagybetűs formában. Emiatt %2 érvénytelen.</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 nem egy érvényes cél név az utasítás feldolgozásban. %2 vagy %3 értéknek kell lennie.</translation>
+ <translation>%1 érvénytelen célnév egy feldolgozási utasításban. Értéke %2 típusú kell legyen, mint pl. %3.</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>Az utolsó lépésnek vagy csomópontokat vagy atomikus értékeket kell tartalmaznia. Ez nem lehet a kettő közötti keverék.</translation>
+ <translation>Egy útvonal utolsó lépésének vagy csomópontokat vagy atomi értékeket kell tartalmaznia. Nem lehet a kettő keveréke.</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>Egy feldolgozási utasítás adata nem tartalmazhatja %1 sztringet</translation>
</message>
<message>
<location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
- <translation>Nem létezik névtér összeköttetés a(z) %1 előtagra</translation>
+ <translation>Nincs névtér kötés a(z) %1 prefixumhoz</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="-12"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
- <translation>Nem létezik névtér összeköttetés a(z) %1 előtagra %2-ben</translation>
+ <translation>Nincs névtér kötés a(z) %1 prefixumhoz %2 helyen</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
+ <source>%1 is an invalid %2</source>
+ <translation>%1 egy érvénytelen %2</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+74"/>
+ <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
+ <translation>Az átadott paraméter %1, de nincs megfelelő %2.</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
+ <translation>%1 paraméter kötelező, de nincs megadva megfelelő %2.</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
+ <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+ <translation>
+ <numerusform>%1 maximum %n argumentumot fogad, így %2 érvénytelen.</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 legalább %n argumentumot fogad, így %2 érvénytelen.</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>Az első argumentum %1 nem lehet %2 típusú. Egy számos típusnak kelle lennie, xs:évHónapIdőtartam vagy xs:napIdőTartam.</translation>
+ <translation>%1 első paramétere nem lehet %2 típusú. Csak numerikus típus, xs:yearMonthDuration vagy xs:dayTimeDuration lehet.</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>Az első argumentum %1 nem lehet %2 típusú. %3, %4 vagy %5 típusúnak kell lennie.</translation>
+ <translation>%1 első argumentuma nem lehet %2 típusú. Csak %3, %4 vagy %5 megengedett.</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>Az második argumentum %1 nem lehet %2 típusú. %3, %4 vagy %5 típusúnak kell lennie.</translation>
+ <translation>%1 második argumentuma nem lehet %2 típusú. Csak %3, %4 vagy %5 megengedett.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
+ <source>%1 is not a valid XML 1.0 character.</source>
+ <translation>%1 érvénytelen XML 1.0 karakter.</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>%1 függvény második argumentumának gyökér csomópontja document típusú kell legyen. %2 nem document csomópont.</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>Ha mindkét értéknek zóna eltolása van, ugyanazt a zóna eltolást kell tartalmazniuk. %1 és %2 nem ugyanaz.</translation>
+ <translation>Ha mindkét értékben zóna eltolás van, akkor annak azonosnak kell lennie. %1 és %2 nem egyezik.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
+ <source>%1 was called.</source>
+ <translation>%1 meghívva.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="-65"/>
+ <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-t %2 vagy %3-nak kell követnie, nem a kicserélési sztring végén.</translation>
+ <translation>%1-t %2 vagy %3 kell kövesse, nem a helyettesítő karakterlánc végén.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="-110"/>
+ <location line="+39"/>
+ <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+ <translation>A csereszövegben %1-t legalább egy számjegy kell kövesse, amennyiben az nincs escapelve.</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>A csereszövegben %1 csak önmaga vagy %2 escapelésére használható, %3-ra nem</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
+ <source>%1 matches newline characters</source>
+ <translation>%1 illeszkedik az újsor karakterekre</translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>%1 and %2 match the start and end of a line.</source>
- <translation>%1 és %2 egyezik a sor elején és végén.</translation>
+ <translation>%1 és %2 a sor elejére és végére is illeszkedik.</translation>
</message>
<message>
- <location line="+10"/>
+ <location line="+6"/>
+ <source>Matches are case insensitive</source>
+ <translation>Az illeszkedések nem nagybetű-érzékenyek</translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>Whitespace characters are removed, except when they appear in character classes</source>
- <translation>Nem látható karakterek eltávolítva, kivéve mikor karakter osztályokban tűnnek fel</translation>
+ <translation>A nem nyomtatható karakterek törlésre kerülnek, kivétel, ha karakter osztályokban szerepelnek</translation>
</message>
<message>
- <location line="+130"/>
+ <location line="+100"/>
+ <source>%1 is an invalid regular expression pattern: %2</source>
+ <translation>%1 érvénytelen reguláris kifejezés minta: %2</translation>
+ </message>
+ <message>
+ <location line="+30"/>
<source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
- <translation>%1 egy érvénytelen jelző reguláris kifejezésekre. Érvényes flagek:</translation>
+ <translation>%1 érvénytelen kapcsoló reguláris kifejezésekhez. Az érvényes kapcsolók:</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>Ha az első argumentum üres sorozat vagy nulla hosszúságú sztring (nincsen névtér), egy előtagot nem lehet meghatározni. %1 előtag volt meghatározva.</translation>
+ <translation>Ha az első argumentum az üres szekvencia vagy egy nulla hosszúságú sztring (névtér nélkül), akkor nem adható meg prefixum. %1 prefixum lett megadva.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
+ <source>It will not be possible to retrieve %1.</source>
+ <translation>Nem lesz lehetséges %1 lekérése.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+266"/>
+ <source>The default collection is undefined</source>
+ <translation>Nincs meghatározva az alapértelmezett kollekció</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>%1 cannot be retrieved</source>
+ <translation>%1-t nem lehet lekérni</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>A(z) %1 szabványosítási forma nem támogatott. A támogatott formák %2, %3, %4 és %5 és semmi más, lásd az üres sztringet (nincs szabványosítás).</translation>
+ <translation>%1 normalizáló formája nem támogatott. A támogatott formák %2, %3, %4 és %5 vagy semmi, pl. az üres sztring (normalizáció nélkül).</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>A zóna eltolásnak a(z) %1..%2 tartományban kell benne lennie. %3 az tartományon kívüli.</translation>
+ <translation>Egy zónaeltolásnak a(z) %1..%2 nyílt intervallumba kell esnie. %3 az értékhatáron kívül van.</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1 is not a whole number of minutes.</source>
+ <translation>%1 nem egész számú perc.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
+ <source>The URI cannot have a fragment</source>
+ <translation>A URI nem tartalmazhat töredéket</translation>
</message>
<message>
<location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
- <translation>Szükséges számosság %1, szerzett számosság %2.</translation>
+ <translation>Az elvárt kardinalitás %1; azonban %2 lett megadva.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3944"/>
- <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>A(z) %1 kódolás érvénytelen. Kizárólag latin karaktereket kell tartalmaznia, nem szabad látható karaktereket tartalmaznia, és a(z) %2 reguláris kifejezéssel kell megegyeznie.</translation>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
+ <source>The item %1 did not match the required type %2.</source>
+ <translation>%1 elem nem egyezik a várt %2 típussal.</translation>
</message>
<message>
- <location line="+260"/>
- <source>The keyword %1 cannot occur with any other mode name.</source>
- <translation>A(z) %1 kulcscszó nem fordulhat elő semmilyen más mód névvel.</translation>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
+ <source>The variable %1 is unused</source>
+ <translation>A(z) %1 változó nincs használva</translation>
</message>
<message>
- <location line="-3117"/>
- <source>No variable with name %1 exists</source>
- <translation>%1 nevű változó nem létezik</translation>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+295"/>
+ <source>W3C XML Schema identity constraint selector</source>
+ <translation>W3C XML séma azonosító szabály kiválasztó</translation>
</message>
<message>
- <location line="+3146"/>
- <source>The value of attribute %1 must be of type %2, which %3 isn&apos;t.</source>
- <translation>A(z) %1 attribútumnak %2 típusúnak kell lennie, amelyik nem %3-as.</translation>
+ <location line="+3"/>
+ <source>W3C XML Schema identity constraint field</source>
+ <translation>W3C XML séma azonosító megszorítás mező</translation>
</message>
<message>
- <location line="+75"/>
- <source>The prefix %1 cannot be bound. By default, it is already bound to the namespace %2.</source>
- <translation>A(z) %1 előtagot nem lehet összekötni. Alapértelmezetten, már hozzá van kötve a %2 névtérhez.</translation>
+ <location line="+4"/>
+ <source>A construct was encountered which is disallowed in the current language(%1).</source>
+ <translation>Olyan szerkezetet találtam, ami az aktuális nyelvben nem megengedett(%1).</translation>
</message>
<message>
- <location line="+312"/>
- <source>A variable with name %1 has already been declared.</source>
- <translation>%1 nevű változó már deklarálva van.</translation>
+ <location line="+50"/>
+ <location line="+7323"/>
+ <source>%1 is an unknown schema type.</source>
+ <translation>%1 ismeretlen séma típus.</translation>
</message>
<message>
- <location line="+39"/>
- <source>No value is available for the external variable with name %1.</source>
- <translation>%1 nevű külső változóhoz nem érhető el érték. </translation>
+ <location line="-7254"/>
+ <source>A template with name %1 has already been declared.</source>
+ <translation>%1 nevű sablon már van deklarálva.</translation>
</message>
<message>
- <location line="+96"/>
- <source>A stylesheet function must have a prefixed name.</source>
- <translation>A stíluslap függvénynek tartalmaznia kell egy előtag nevet.</translation>
+ <location line="+26"/>
+ <source>%1 is not a valid numeric literal.</source>
+ <translation>%1 érvénytelen numerikus literál.</translation>
</message>
<message>
- <location line="+18"/>
- <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>A(z) %1 névtér foglalt, ennek következtében a felhasználó által definiált függvényt nem lehet használni. Próbálja ki az előredefiniált %2 előtagot, amely erre az esetekre van kitalálva.</translation>
+ <location line="+187"/>
+ <source>Only one %1 declaration can occur in the query prolog.</source>
+ <translation>Csak egy %1 deklaráció szerepelhet a lekérdezés bevezetésben.</translation>
</message>
<message>
- <location line="+106"/>
- <source>An argument with name %1 has already been declared. Every argument name must be unique.</source>
- <translation>Egy %1 nevű argumentum már deklarálva van. Minden argumentum névnek egyedülállónak kell lennie.</translation>
+ <location line="+188"/>
+ <source>The initialization of variable %1 depends on itself</source>
+ <translation>%1 változó inicializálása önmagától függ</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>Mikor %1 függvény van használva egyeztetése egy mintán belül, az argumentumnak egy változó hivatkozásnak vagy egy sztring literálnak kell lennie.</translation>
+ <location line="+63"/>
+ <source>No variable with name %1 exists</source>
+ <translation>Nem létezik %1 nevű változó</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>Egy XSLT mintában, az első argumentumnak a(z) %1 függvényre egy sztring literálnak kell lennie, amikor egyeztetésre használják.</translation>
+ <location line="+2841"/>
+ <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+ <translation>A(z) %1 verzió nem támogatott. A támogatott XQuery verzió 1.0.</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>Egy XSLT mintában, az első argumentumnak a(z) %1 függvény esetén egy literálnak vagy egy változó hibatkozásnak kell lennie, mikor egyeztetésre használják.</translation>
+ <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 kódolás érvénytelen. Csak Latin karaktereket tartalmazhat, nem nyomtatható karakterek nélkül, és illeszkednie kell %2 reguláris kifejezésre.</translation>
</message>
<message>
- <location line="+9"/>
- <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
- <translation>Egy XSLT mintában, %1 függvénynek nem lehet egy harmadik argumentuma.</translation>
+ <location line="+55"/>
+ <source>No function with signature %1 is available</source>
+ <translation>%1 szignaturájú függvény nem található</translation>
</message>
<message>
+ <location line="+72"/>
<location line="+10"/>
- <source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
- <translation>Egy XSLT mintában, kizárólag a(z) %1 és %2 függvényeket, és %3-at nem lehet egyeztetésre használni.</translation>
+ <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+ <translation>Egy alapértelmezett névtér deklarációnak meg kell előznie a függvény-, változó- és opció deklarációkat.</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>Egy XSLT mintában, %1 tengelyt nem lehet használni, kizárólag a(z) %2 vagy %3 tengelyeket.</translation>
+ <location line="+10"/>
+ <source>Namespace declarations must occur before function, variable, and option declarations.</source>
+ <translation>A névtér deklarációknak meg kell előzniük a függvény-, változó- és opció deklarációkat.</translation>
</message>
<message>
- <location line="+126"/>
- <source>%1 is an invalid template mode name.</source>
- <translation>%1 egy érvénytelen sablon mód név.</translation>
+ <location line="+11"/>
+ <source>Module imports must occur before function, variable, and option declarations.</source>
+ <translation>Modul importoknak meg kell előzniük a függvény-, változó- és opció deklarációkat.</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>Egy változó összeköttetés nevének egy for kifejezésben különböznie kell a pozícionális változótol. Ezért, a két %1 nevű változó ütközik.</translation>
+ <location line="+102"/>
+ <source>The keyword %1 cannot occur with any other mode name.</source>
+ <translation>%1 kulcsszó nem szerepelhet együtt semmilyen más mód névvel.</translation>
</message>
<message>
- <location line="+778"/>
- <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
- <translation>A terv jóváhagyási tulajdonság nem támogatott. Ezért, %1 kifejezést nem lehet használni.</translation>
+ <location line="+29"/>
+ <source>The value of attribute %1 must be of type %2, which %3 isn&apos;t.</source>
+ <translation>%1 attribútum értékének %2 típusúnak kell lennie, %3 nem az.</translation>
</message>
<message>
- <location line="+40"/>
- <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
- <translation>A pragma kifejezések egyike sem támogatott. Ezért egy visszavonuló kifejezést kell nyújtani</translation>
+ <location line="+69"/>
+ <source>It is not possible to redeclare prefix %1.</source>
+ <translation>%1 prefixum újradeklarálása nem lehetséges.</translation>
</message>
<message>
- <location line="+269"/>
- <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
- <translation>Sablon paraméter mindegyik nevének egyedülállónak kell lennie, %1 az duplikáns.</translation>
+ <location line="+6"/>
+ <source>The prefix %1 cannot be bound. By default, it is already bound to the namespace %2.</source>
+ <translation>%1 prefixum nem köthető. Alapértelmezés szerint már kötött %2 névtérhez.</translation>
</message>
<message>
- <location line="+462"/>
- <source>No function with name %1 is available.</source>
- <translation>%1 nevű függvény nem elérhető.</translation>
+ <location line="+12"/>
+ <source>Prefix %1 is already declared in the prolog.</source>
+ <translation>%1 prefixum már deklarálva van a bevezetésben.</translation>
</message>
<message>
- <location line="-6235"/>
- <source>%1 is not a valid numeric literal.</source>
- <translation>%1 nem egy érvényes számos literál.</translation>
+ <location line="+95"/>
+ <source>The name of an option must have a prefix. There is no default namespace for options.</source>
+ <translation>Egy opció nevének kötelező prefixumot megadni. Nics alapértelmezett névetér az opciók számára.</translation>
</message>
<message>
- <location line="-152"/>
- <source>W3C XML Schema identity constraint selector</source>
- <translation>W3C XML terv azonosító megszorító kiválasztó</translation>
+ <location line="+171"/>
+ <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
+ <translation>A Schema Import szolgáltatás nem támogatott, így %1 deklarációk nem fogadhatók el.</translation>
</message>
<message>
- <location line="+3"/>
- <source>W3C XML Schema identity constraint field</source>
- <translation>W3C XML Terv azonosító megszorító mező</translation>
+ <location line="+13"/>
+ <source>The target namespace of a %1 cannot be empty.</source>
+ <translation>Egy %1 cél-névtere nem lehet üres.</translation>
</message>
<message>
- <location line="+4"/>
- <source>A construct was encountered which is disallowed in the current language(%1).</source>
- <translation>Egy olyan konstruktort talált amelyik nincsen engedélyezve az aktuális nyelvben(%1).</translation>
+ <location line="+8"/>
+ <source>The module import feature is not supported</source>
+ <translation>A modul import szolgáltatás nem támogatott</translation>
</message>
<message>
- <location line="+6502"/>
- <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
- <translation>%1 névteret kizárólag a %2-vel lehet összekötni (és ennyi, vagy mindkét esetben, előre deklarált).</translation>
+ <location line="+13"/>
+ <source>A variable with name %1 has already been declared.</source>
+ <translation>Egy %1 nevű változó már deklarálva van.</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 előtagot kizárólag a %2-vel lehet összekötni (és ennyi, vagy mindkét esetben, előre deklarált).</translation>
+ <location line="+39"/>
+ <source>No value is available for the external variable with name %1.</source>
+ <translation>%1 nevű külső változóhoz nem érhető el érték.</translation>
</message>
<message>
- <location line="+120"/>
- <source>An attribute with name %1 has already appeared on this element.</source>
- <translation>%1 attribútum név már van ebben az elemben.</translation>
+ <location line="+96"/>
+ <source>A stylesheet function must have a prefixed name.</source>
+ <translation>Egy stíluslap függvénynek prefixummal ellátott neve kell legyen.</translation>
</message>
<message>
- <location line="+61"/>
- <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
- <translation>Egy közvetlen elem konstruktor, mely nincsen jól megformázva. %1 a(z) %2-ben végzőik.</translation>
+ <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>Egy felhasználói függvény névtere nem lehet üres (próbálja meg a(z) %1 prefixumot, ami ilyen esetekre van fenntartva)</translation>
</message>
<message>
- <location line="+458"/>
- <source>The name %1 does not refer to any schema type.</source>
- <translation>A(z) %1 név nem vonatkozik egyetlen terv típusra sem.</translation>
+ <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>A(z) %1 névtér fenntartott, így felhasználói függvények nem használhatják. Próbálja meg a(z) %2 prefixumot, ami ilyen esetekre van.</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 egy összetett típus. Összetett típusra kasztolás nem lehetséges. De egy atomikus típusra mint egy %2 működik.</translation>
+ <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>Egy függvénytár modulban definiált felhasználói függvény névtere meg kell egyezzen a modul névterével. Más szóval %1 kellene legyen %2 helyett</translation>
</message>
<message>
- <location line="+9"/>
- <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
- <translation>%1 nem egy atomikus típus. Kaszolás kizárólag csak atomikus típusra lehetséges.</translation>
+ <location line="+34"/>
+ <source>A function already exists with the signature %1.</source>
+ <translation>%1 szignaturájú függvény már létezik.</translation>
</message>
<message>
- <location line="+76"/>
- <source>%1 is not a valid name for a processing-instruction.</source>
- <translation>%1 nem egy érvényes név egy utasítás feldolgozásra.</translation>
+ <location line="+23"/>
+ <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
+ <translation>Külső függvények nem támogatottak. Minden támogatott függvény használható, külső függvényként való deklarálás nélkül</translation>
</message>
<message>
- <location line="+188"/>
- <source>The name of an extension expression must be in a namespace.</source>
- <translation>Egy kifejezés kiterjesztés nevének egy névtérben kell lennie.</translation>
+ <location line="+37"/>
+ <source>An argument with name %1 has already been declared. Every argument name must be unique.</source>
+ <translation>%1 nevű argumentum már deklarálva van. Minden argumentumnévnek egyedinek kell lennie.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="-93"/>
- <source>Required type is %1, but %2 was found.</source>
- <translation>%1 a szükséges típus, de %2 található.</translation>
+ <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 függvény minta belsejében történő illesztésekor, az argumentumnak változó hivatkozásnak vagy szöveges literálnak kell lennie.</translation>
</message>
<message>
- <location line="+44"/>
- <source>Promoting %1 to %2 may cause loss of precision.</source>
- <translation>%1 elősegítése %2-re precíziós vesztést okozhat.</translation>
+ <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>Egy XSL-T mintában %1 függvény első argumentumának szöveges literálnak kell lennie, ha illesztéshez használjuk.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="-7"/>
- <source>It&apos;s not possible to add attributes after any other kind of node.</source>
- <translation>Nem lehetséges attribútumokat hozzáadni, bármely másik csomópont után.</translation>
+ <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>Egy XSL-T mintában %1 függvény első argumentumának szöveges literálnak vagy változó hivatkozásnak kell lennie, ha illesztéshez használjuk.</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>Kizárólag a Unicode Kódpontos összevetés támogatott(%1). %2 nem támogatott.</translation>
+ <location line="+9"/>
+ <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
+ <translation>Egy XSL-T mintában %1 függénynek nem lehet harmadik argumentuma.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="-180"/>
- <source>Integer division (%1) by zero (%2) is undefined.</source>
- <translation>Egész számos (%1) osztás nullával (%2) nem definiált.</translation>
+ <location line="+10"/>
+ <source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
+ <translation>Egy XSL-T mintában csak %1 és %2 függvények használhatók illesztéshez, %3 nem.</translation>
</message>
<message>
- <location line="+7"/>
- <source>Division (%1) by zero (%2) is undefined.</source>
- <translation>Osztás (%1) nullával (%2) nem definiált.</translation>
+ <location line="+63"/>
+ <source>In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can.</source>
+ <translation>Egy XSL-T mintában %1 tengely nem, csak %2 vagy %3 tengely használható.</translation>
</message>
<message>
- <location line="+7"/>
- <source>Modulus division (%1) by zero (%2) is undefined.</source>
- <translation>Tényezős osztás (%1) nullával (%2) nem definiált.</translation>
+ <location line="+126"/>
+ <source>%1 is an invalid template mode name.</source>
+ <translation>%1 érvénytelen sablon mód név.</translation>
</message>
- <message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
- <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
- <translation>
- <numerusform>%1 legalább %n argumentumot vár. A(z) %2 ennel következtében érvénytelen.</numerusform>
- </translation>
+ <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>Egy for-kifejezésben kötött változó nevének különbözőnek kell lennie, mint a pozicionális változó neve. Így a két %1 nevű változó ütközik.</translation>
</message>
- <message numerus="yes">
- <location line="+11"/>
- <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
- <translation>
- <numerusform>%1 legalább %n argumentumot igényel. Ennek következtében a(z) %2 érvénytelen.</numerusform>
- </translation>
+ <message>
+ <location line="+778"/>
+ <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
+ <translation>A Schema Validation szolgáltatás nem támogatott. Ennélfogva %1-kifejezések nem használhatók.</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>A második argumentum rendszergazda csomópontja %1 függvényre dokumentum csomópontnak kell lenni. %2 nem egy dokumentum csomópont.</translation>
+ <location line="+40"/>
+ <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
+ <translation>Pragma kifejezések egyike sem támogatott. Ennélfogva léteznie kell egy alapértelmezett kifejezésnek</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3172"/>
- <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
- <translation>A névtér a felhasználó által definiált függvényre nem lehet üres (próbálja ki az előredefiniált %1 előtagot, mely innen esetekre lett kitalálva)</translation>
+ <location line="+269"/>
+ <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
+ <translation>Minden sablonparaméter neve egyedi kell legyen, %1 azonban duplán szerepel.</translation>
</message>
<message>
- <location line="-693"/>
- <location line="+10"/>
- <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
- <translation>Egy alapértelmezett névtér deklarációnak a függvény, változó, és opció deklarációk előtt kell elhelyezkednie.</translation>
+ <location line="+129"/>
+ <source>The %1-axis is unsupported in XQuery</source>
+ <translation>A(z) %1-tengely nem támogatott XQuery-ben</translation>
</message>
<message>
- <location line="+10"/>
- <source>Namespace declarations must occur before function, variable, and option declarations.</source>
- <translation>A névtér deklarációnak a függvény, változó, és opció deklarációk előtt kell elhelyezkednie.</translation>
+ <location line="+333"/>
+ <source>No function with name %1 is available.</source>
+ <translation>Nem létezik %1 nevű függvény.</translation>
</message>
<message>
- <location line="+11"/>
- <source>Module imports must occur before function, variable, and option declarations.</source>
- <translation>Modul importálásnak a függvény, változó, és opció deklarációk előtt kell elhelyezkednie.</translation>
+ <location line="+102"/>
+ <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+ <translation>Prefixumhoz kötés esetén a névtér URI nem lehet az üres sztring, %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+12"/>
- <source>%1 is not a whole number of minutes.</source>
- <translation>%1 nem egy egész számú perc érték.</translation>
+ <location line="+7"/>
+ <source>%1 is an invalid namespace URI.</source>
+ <translation>%1 érvénytelen névtér URI.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+60"/>
- <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
- <translation>%1 attribtútumot nem lehet sorozatosítani, mert legfelső szinten tűnik fel.</translation>
+ <location line="+6"/>
+ <source>It is not possible to bind to the prefix %1</source>
+ <translation>Nem lehet kötni %1 prefixumhoz</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+344"/>
- <source>%1 is an unsupported encoding.</source>
- <translation>%1 egy nem támogatott kódolás.</translation>
+ <location line="+7"/>
+ <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation>%1 névtér csak %2-hoz köthető (és minden esetben előre deklarált).</translation>
</message>
<message>
- <location line="+16"/>
- <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
- <translation>%1 oktálisokat tartalmat, melyek tiltva vannak a lekérdezett %2 kódolásban.</translation>
+ <location line="+8"/>
+ <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation>%1 prefixum csak %2-hoz köthető (és minden esetben előre deklarált).</translation>
</message>
<message>
- <location line="+18"/>
- <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
- <translation>A kódpont %1, mely a %2-ben fordul elő %3 kódolást használva, egy érvénytelen XML karakter.</translation>
+ <location line="+15"/>
+ <source>Two namespace declaration attributes have the same name: %1.</source>
+ <translation>Két névtér-deklaráció attribútum neve azonos: %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
- <source>Ambiguous rule match.</source>
- <translation>Bizonytalan szabály egyezés.</translation>
+ <location line="+89"/>
+ <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
+ <translation>Egy névtér URI-nek konstansnak kell lennie és nem használhat bennfoglalt kifejezéseket.</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>Egy névtér konstruktorban, egy névtér értéke nem lehet egy üres sztring.</translation>
+ <location line="+16"/>
+ <source>An attribute with name %1 has already appeared on this element.</source>
+ <translation>%1 nevű attribútum már szerepelt ebben az elemben.</translation>
</message>
<message>
- <location line="+11"/>
- <source>The prefix must be a valid %1, which %2 is not.</source>
- <translation>Az előtagnak egy érvényes %1-nek kell lennie, %2 nem lehet.</translation>
+ <location line="+61"/>
+ <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
+ <translation>Egy közvetlen elem konstruktor nem jól formázott. %1-t %2 zárja le.</translation>
</message>
<message>
- <location line="+14"/>
- <source>The prefix %1 cannot be bound.</source>
- <translation>A(z) %1 előtagot nem lehet összekötni.</translation>
+ <location line="+458"/>
+ <source>The name %1 does not refer to any schema type.</source>
+ <translation>A(z) %1 név nem mutat semmilyen séma típusra.</translation>
</message>
<message>
<location line="+10"/>
- <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
- <translation>Kizárólag a(z) %1 előtagot lehet összekötni a %2-vel és fordítva.</translation>
+ <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 komplex típus. Komplex típusra való kényszerítés nem lehetséges. Azonban atomi típusokra, mint pl. %2 történő kényszerítés igen.</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>A(z) %1 paraméter követelik, de nincs megelelő %2 támogatás hozzá.</translation>
+ <location line="+9"/>
+ <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
+ <translation>%1 nem atomi típus. Típuskényszerítés csak atomi típusra történhet.</translation>
</message>
<message>
- <location line="-71"/>
- <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
- <translation>A(z) %1 paraméter teljesítve, de a megfelelő %2 nem létezik.</translation>
+ <location line="+76"/>
+ <source>%1 is not a valid name for a processing-instruction.</source>
+ <translation>%1 érvénytelen feldogozási utasítás név.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
- <source>The URI cannot have a fragment</source>
- <translation>Az URI nem tartalmaz tördezettséget</translation>
+ <location line="+69"/>
+ <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 nem a láthatóságon belüli attribútum deklarációk között van. A séma import szolgáltatás nem támogatott.</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>The name of an extension expression must be in a namespace.</source>
+ <translation>Egy kiterjesztés kifejezés nevének névtérben kell lennie.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
- <translation>%1 elem nincs engedélyezve ezen a ponton.</translation>
+ <translation>%1 elem nem megengedett ezen a helyen.</translation>
</message>
<message>
<location line="+9"/>
<source>Text nodes are not allowed at this location.</source>
- <translation>Szöveg csomópontok nincsenek engedélyezve ezen a ponton.</translation>
+ <translation>Szöveg csomópontok nem megengedettek ezen a helyen.</translation>
</message>
<message>
<location line="+20"/>
<source>Parse error: %1</source>
- <translation>Elemzési hiba: %1</translation>
+ <translation>Értelmezési hiba: %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>XSLT verzió attribútum értékének %1 típusú értéknek kell lennie, %2 nem lehet.</translation>
+ <translation>Az XSL-T verzió attribútum értékének %1 típusúnak kell lennie, %2 pedig nem az.</translation>
</message>
<message>
<location line="+20"/>
<source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
- <translation>Egy XSLT 1.0 stíluslap egy 2.0 feldolgozóval való futtatása.</translation>
+ <translation>XSL-T 1.0 stíluslap futtatása 2.0 verziójú feldolgozóval.</translation>
</message>
<message>
<location line="+108"/>
<source>Unknown XSL-T attribute %1.</source>
- <translation>Ismeretlen XSLT attribútum %1.</translation>
+ <translation>Ismeretlen XSL-T attributum: %1.</translation>
</message>
<message>
<location line="+23"/>
<source>Attribute %1 and %2 are mutually exclusive.</source>
- <translation>A(z) %1 és %2 attribútum kölcsönösen kizárják egymást.</translation>
+ <translation>%1 és %2 attribútumok kölcsönösen kizáróak.</translation>
</message>
<message>
<location line="+166"/>
<source>In a simplified stylesheet module, attribute %1 must be present.</source>
- <translation>Egy leegyszerűsített stíluslap modulban, %1 attribútumot kell nyújtani.</translation>
+ <translation>Egy egyszerűsített stíluslap modulban a(z) %1 attribútumnak jelen kell lennie.</translation>
</message>
<message>
<location line="+72"/>
<source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
- <translation>Ha a(z) %1 elem nem tartalmaz %2 attribútumot, akkor nem tartalmazhat %3 vagy %4 attribútumot.</translation>
+ <translation>Ha %1 elemnek nincs %2 attribútuma, akkor %3 vagy %4 attribútuma sem lehet.</translation>
</message>
<message>
<location line="+9"/>
<source>Element %1 must have at least one of the attributes %2 or %3.</source>
- <translation>%1 elemnek legalább egy %2 vagy %3 attribútumot kell tartalmaznia.</translation>
+ <translation>%1 elemnek valamelyik attribútumát meg kell adni %2 vagy %3 közül.</translation>
</message>
<message>
<location line="+28"/>
<source>At least one mode must be specified in the %1-attribute on element %2.</source>
- <translation>Legalább egy csomópontot meg kell határozni a(z) %1 attribútumban a(z) %2 elemen.</translation>
+ <translation>%2 elem %1-attribútumában legalább egy módot meg kell adni.</translation>
</message>
<message>
<location line="+123"/>
<source>Element %1 must come last.</source>
- <translation>%1 elemnek kell utoljára következnie.</translation>
+ <translation>%1 elemnek az utoljára kell szerepelnie.</translation>
</message>
<message>
<location line="+24"/>
<source>At least one %1-element must occur before %2.</source>
- <translation>Legalább egy %1 elemnek kell előfordulnia %2 előtt.</translation>
+ <translation>Legalább egy %1-elemnek szerepelnie kell %2 előtt.</translation>
</message>
<message>
<location line="+7"/>
<source>Only one %1-element can appear.</source>
- <translation>Csak egy %1 elem jelenhet meg.</translation>
+ <translation>Csak egy %1-elem jelenhet meg.</translation>
</message>
<message>
<location line="+31"/>
<source>At least one %1-element must occur inside %2.</source>
- <translation>Legalább egy %1 elem fordulhat elő %2-n belül.</translation>
+ <translation>Legalább egy %1-elemnek meg kell jelennie %2-n belül.</translation>
</message>
<message>
<location line="+58"/>
<source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
- <translation>Mikor %1 attribútuk van benyújtva %2-n, egy sorozat konstruktort nem lehet használni.</translation>
+ <translation>Ha %2-n meg van adva %1 attribútum, akkor nem használható szekvencia konstruktor.</translation>
</message>
<message>
<location line="+13"/>
<source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
- <translation>%1 elemnek vagy egy %2 attribútumot vagy egy sorozat konstruktort kell tartalmaznia.</translation>
+ <translation>%1 elemnek vagy %2-attribútumának vagy szekvencia konstruktorának lennie kell.</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>Amikor egy paramétert igényel, egy alapértelmezett érték ellátni egy %1 attribútum vagy egy sorozat konstruktoron keresztül.</translation>
+ <translation>Ha paraméter az elvárt, akkor alapértelmezett értéket nem lehet %1-attribútumon vagy szekvencia konstruktoron keresztül átadni.</translation>
</message>
<message>
<location line="+270"/>
<source>Element %1 cannot have children.</source>
- <translation>%1 elem nem tartalmazhat gyereket.</translation>
+ <translation>%1 elemnek nem lehetnek gyermekei.</translation>
</message>
<message>
<location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
- <translation>%1 elem nem tartalmazhat egy sorozat konstruktort.</translation>
+ <translation>%1 elemnek nem lehet szekvencia konstruktora.</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>A(z) %1 attribútum nem jelenhet meg %2-n, mikor egy %3 gyereke.</translation>
+ <translation>%1 attribútum nem szerepelhet %2-n, ha az %3 gyermeke.</translation>
</message>
<message>
<location line="+15"/>
<source>A parameter in a function cannot be declared to be a tunnel.</source>
- <translation>Egy paramétert nem lehet behangoltnak deklarálni egy függvényben.</translation>
+ <translation>Egy függvényparaméter nem definiálható mint tunnel.</translation>
</message>
<message>
<location line="+149"/>
<source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
- <translation>Ez a feldolgozó nem terv biztos és ennek következtében a(z) %1-t nem lehet használni.</translation>
+ <translation>Ez a feldolgozó nem sémafüggő, ezért %1 nem használható.</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>Felső szintű stíluslap elemeknek nem szabad egy nem nulla névtérnek lenniük, %1 nem jó.</translation>
+ <translation>Felső szintű stíluslap elemeknek egy nem üres névtérben kell lenniük, ezért %1 nem jó.</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>%1 attribútum értékének a(z) %2-s elemen vagy %3 vagy %4, vagy %5-nek kell lennie.</translation>
+ <translation>%2 elem %1 attribútumának értéke %3 vagy %4 kell legyen, de nem %5.</translation>
</message>
<message>
<location line="+20"/>
<source>Attribute %1 cannot have the value %2.</source>
- <translation>%1 attribútum nem tartalmazhat %2 értéket.</translation>
+ <translation>%1 attribútum értéke nem lehet %2.</translation>
</message>
<message>
<location line="+58"/>
<source>The attribute %1 can only appear on the first %2 element.</source>
- <translation>A(z) %1 attribútum kizárólag az első %2 elemen tűnhet fel.</translation>
+ <translation>%1 attribútum csak az első %2 elem esetén jelenhet meg.</translation>
</message>
<message>
<location line="+99"/>
<source>At least one %1 element must appear as child of %2.</source>
- <translation>Legalább egy %1 elemnek mutatkoznia %2 gyerekeként.</translation>
+ <translation>Legalább egy %1 elemnek %2 gyermekeként meg kell jelennie.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdparticlechecker.cpp" line="+165"/>
+ <source>Empty particle cannot be derived from non-empty particle.</source>
+ <translation>Üres részecske nem származtatható nem üres részecskéből.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Derived particle is missing element %1.</source>
+ <translation>Származtatott részecskéből hiányzik %1 elem.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Derived element %1 is missing value constraint as defined in base particle.</source>
+ <translation>%1 származtatott elemből hiányzik az ős részecskében definiált érték megszorítás.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Derived element %1 has weaker value constraint than base particle.</source>
+ <translation>%1 származtatott elem érték megkötése gyengébb, mint az ős részecskéé.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Fixed value constraint of element %1 differs from value constraint in base particle.</source>
+ <translation>%1 elem rögzített érték megkötése különbözik az ős részecskében megadott érték megkötéstől.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Derived element %1 cannot be nillable as base element is not nillable.</source>
+ <translation>%1 elem nem lehet nil-feltételű, mert az ős eleme sem nil-feltételű.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Block constraints of derived element %1 must not be more weaker than in the base element.</source>
+ <translation>%1 származtatott elem blokk megkötései nem lehetnek gyengébbek, mint az ős elemben.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Simple type of derived element %1 cannot be validly derived from base element.</source>
+ <translation>%1 származtatott elem egyszerű típusa nem származtatható érvényesen az ős elemből.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Complex type of derived element %1 cannot be validly derived from base element.</source>
+ <translation>%1 származtatott elem komplex típusa nem származtatható érvényesen az ős elemből.</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Element %1 is missing in derived particle.</source>
+ <translation>%1 elem hiányzik a származtatott részecskéből.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Element %1 does not match namespace constraint of wildcard in base particle.</source>
+ <translation>%1 elem nem illeszkedik az ős részecskében megadott névtér helyettesítő mintájára.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Wildcard in derived particle is not a valid subset of wildcard in base particle.</source>
+ <translation>Származtatott részecske helyettesítő mintája érvénytelen részhalmaza az ős részecske helyettesítő mintájának.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>processContent of wildcard in derived particle is weaker than wildcard in base particle.</source>
+ <translation>Származtatott elem mintájának processContent értéke gyengébb, mint az ős részecske mintája.</translation>
+ </message>
+ <message>
+ <location line="+240"/>
+ <source>Derived particle allows content that is not allowed in the base particle.</source>
+ <translation>Származtatott részecske olyan tartalmat is engedélyez, ami nem megengedett az ős részecskében.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/schema/qxsdschemachecker.cpp" line="+227"/>
<source>%1 has inheritance loop in its base type %2.</source>
- <translation>%1 tartalmaz egy öröklődési hurkot annak %2 alaptípusában.</translation>
+ <translation>%1 öröklődési hurkot tartalmaz %2 szülő típusában.</translation>
</message>
<message>
<location line="+5"/>
<location line="+24"/>
<source>Circular inheritance of base type %1.</source>
- <translation>A(z) %1 alaptípus cirkuláris öröklődése.</translation>
+ <translation>Körkörös %1 őstípusú öröklődés.</translation>
</message>
<message>
<location line="+11"/>
<source>Circular inheritance of union %1.</source>
- <translation>A(z) %1 union cirkuláris öröklődése.</translation>
+ <translation>%1 union körkörös öröklődése.</translation>
</message>
<message>
<location line="+25"/>
<source>%1 is not allowed to derive from %2 by restriction as the latter defines it as final.</source>
- <translation>A(z) %1 %2-ből való származtatása nem megengedett, azzal a korlátozassal, hogy az utóbbi utolsónak definiálja.</translation>
+ <translation>%1 nem származhat %2-ből megkötéssel, mert utóbbi final-ként definiálja.</translation>
</message>
<message>
<location line="+5"/>
<source>%1 is not allowed to derive from %2 by extension as the latter defines it as final.</source>
- <translation>%1-nek nem engedélyezett a %2-ből való származtatása, azzal a kiegészítéssel, hogy a utóbbi végsőnek definiálja.</translation>
+ <translation>%1 nem származhat %2-ből kiterjesztéssel, mert utóbbi final-ként definiálja.</translation>
</message>
<message>
<location line="+31"/>
<source>Base type of simple type %1 cannot be complex type %2.</source>
- <translation>A(z) %1 egyszerű típus alaptípusa nem lehet egy %2 összetett típus.</translation>
+ <translation>%1 egyszerű típus őstípusa nem lehet %2 komplex típus.</translation>
</message>
<message>
<location line="+9"/>
<source>Simple type %1 cannot have direct base type %2.</source>
- <translation>A(z) %1 egyszerű típus nem tartalmazhat közvetlen %2 alap típust.</translation>
+ <translation>%1 egyszerű típus közvetlen őstípusa nem lehet %2.</translation>
</message>
<message>
<location line="+33"/>
<location line="+9"/>
<source>Simple type %1 is not allowed to have base type %2.</source>
- <translation>%1 egyszerű típusnak nincs engedélyezve, hogy %2 alap típusokat tartalmazzon.</translation>
+ <translation>%1 egyszerű típus őstípusa nem lehet %2.</translation>
</message>
<message>
<location line="+12"/>
<source>Simple type %1 can only have simple atomic type as base type.</source>
- <translation>A(z) %1 egyszerű típus kizárólag egyszerű atomikus típusokat tartalmazhat alaptípusként.</translation>
+ <translation>%1 egyszerű típus őse csak egyszerű atomi típus lehet.</translation>
</message>
<message>
<location line="+6"/>
<source>Simple type %1 cannot derive from %2 as the latter defines restriction as final.</source>
- <translation>%1 egyszerű típus nem származtatható %2-ből, mint ahogy az utóbbi végső korlátozásokat definiál.</translation>
+ <translation>%1 nem származhat %2-ből, mert utóbbi final megkötést definiál.</translation>
</message>
<message>
<location line="+13"/>
<location line="+484"/>
<source>Variety of item type of %1 must be either atomic or union.</source>
- <translation>%1 elemtípus különbözőségeinek vagy vagy atomikus vagy unionnak kell lenni.</translation>
+ <translation>%1 elemtípus választéka csak atomic vagy union lehet.</translation>
</message>
<message>
<location line="-474"/>
<location line="+483"/>
<source>Variety of member types of %1 must be atomic.</source>
- <translation>%1 tagtípusok különbözőségének atomikusnak kell lennie.</translation>
+ <translation>%1 tagtípusok választéka csak atomi lehet.</translation>
</message>
<message>
<location line="-470"/>
<location line="+451"/>
<source>%1 is not allowed to derive from %2 by list as the latter defines it as final.</source>
- <translation>%1 származtatása a(z) %2-ből nem engedélyezett, listázva azt, hogy az utóbbi végsőként definiálja.</translation>
+ <translation>%1 nem származhat %2-ből listával, mert utóbbi final-ként definiálja.</translation>
</message>
<message>
<location line="-431"/>
<source>Simple type %1 is only allowed to have %2 facet.</source>
- <translation>%1 egyszerű típus kizárólag %2 oldalt tartalmazhat.</translation>
+ <translation>%1 egyszerű típusnak csak %2 facet-je lehet.</translation>
</message>
<message>
<location line="+10"/>
<source>Base type of simple type %1 must have variety of type list.</source>
- <translation>%1 egyszerű típus alap típusának különböző típus listákat kell tartalmaznia.</translation>
+ <translation></translation>
</message>
<message>
<location line="+6"/>
<source>Base type of simple type %1 has defined derivation by restriction as final.</source>
- <translation>%1 egyszerű típus alaptípusa definiálja a számaztatást végső korlátozással.</translation>
+ <translation>%1 egyszerű típus őstípusa a megkötéssel történő származtatást final-ként definiálta.</translation>
</message>
<message>
<location line="+6"/>
<source>Item type of base type does not match item type of %1.</source>
- <translation>Az alap típus elem típusa nem egyezik a(z) %1 elemtípusával. </translation>
+ <translation>Az ős típusa nem egyezik %1 elemtípussal.</translation>
</message>
<message>
<location line="+26"/>
<location line="+93"/>
<source>Simple type %1 contains not allowed facet type %2.</source>
- <translation>%1 egyszerű típus nem engedélyezett oldal %2 típusokat tartalmaz.</translation>
+ <translation>%1 egyszerű típus nem megengedett %2 facet típust tartalmaz.</translation>
</message>
<message>
<location line="-72"/>
<location line="+413"/>
<source>%1 is not allowed to derive from %2 by union as the latter defines it as final.</source>
- <translation>%1 %2-ből történő származtatása nem engedélyezett az unió által, az utóbbi végsőként definiálja.</translation>
+ <translation>%1 nemm származhat %2-ből union-nal, mert utóbbi final-ként definiálta.</translation>
</message>
<message>
<location line="-404"/>
<source>%1 is not allowed to have any facets.</source>
- <translation>%1 nem tartalmazhat semmilyen oldalt.</translation>
+ <translation>%1 nem birtokolhat facet-eket.</translation>
</message>
<message>
<location line="+8"/>
<source>Base type %1 of simple type %2 must have variety of union.</source>
- <translation>%2 egyszerű típus %1 alap típusának különböző egységeket kell tartalmaznia.</translation>
+ <translation>%2 típusú %1 őstípusnak union választéka kell legyen.</translation>
</message>
<message>
<location line="+9"/>
<source>Base type %1 of simple type %2 is not allowed to have restriction in %3 attribute.</source>
- <translation>%2 egyszerű típus %1 alap típusa nem tartalmazhat korlátozásokat a %3 attribútumban.</translation>
+ <translation>%2 egyszerű típusú %1 őstípusnak nem lehet megkötést adni %3 attribútumban.</translation>
</message>
<message>
<location line="+18"/>
<source>Member type %1 cannot be derived from member type %2 of %3&apos;s base type %4.</source>
- <translation>%1 tag típus nem származtatható a(z) %3 %4 alap típusának %2 tagtípusából.</translation>
+ <translation>%1 tag típus nem származhat %2 tag típusból, %3-nak %4 őstípusából.</translation>
</message>
<message>
<location line="+65"/>
<source>Derivation method of %1 must be extension because the base type %2 is a simple type.</source>
- <translation>%1 származtatása eljárásának kiterjesztésnek kell lennie, mert %2 alap típus egy egyszerű típus.</translation>
+ <translation>%1 származtatási módja kiterjesztés kell legyen, mert %2 őstípus egyszerű típus.</translation>
</message>
<message>
<location line="+30"/>
<source>Complex type %1 has duplicated element %2 in its content model.</source>
- <translation>A(z) %1 összetett típusnak duplikáns %2 eleme van a tartalmi modellében.</translation>
+ <translation>%1 komplex típus tartalom modelljében %2 elem duplán szerepel.</translation>
</message>
<message>
<location line="+8"/>
<source>Complex type %1 has non-deterministic content.</source>
- <translation>%1 összetett típusnak nincsen meghatározott tartalma.</translation>
+ <translation>%1 komplex típus tartalma nem determinisztikus.</translation>
</message>
<message>
<location line="+21"/>
<source>Attributes of complex type %1 are not a valid extension of the attributes of base type %2: %3.</source>
- <translation>%1 összetett típus attribútumai a(z) %2 alap típus attribútumainak nem érvényes kiterjesztései: %3.</translation>
+ <translation>%1 komplex típus attribútumai nem érvényes kiterjesztései %2 őstípus attribútumainak: %3.</translation>
</message>
<message>
<location line="+37"/>
<source>Content model of complex type %1 is not a valid extension of content model of %2.</source>
- <translation>%1 komplex típus tartalmi modelle a(z) %2 tartalmi modellének nem egy érvényes kiterjesztése.</translation>
+ <translation>%1 komplex típus tartalom modellje nem érvényes kiterjesztése %2 tartalom modelljének.</translation>
</message>
<message>
<location line="+10"/>
<source>Complex type %1 must have simple content.</source>
- <translation>%1 komplex típusnak tartalmaznia kell egy egyszerű tartalmat.</translation>
+ <translation>%1 komplex típusnak egyszerű tartalma kell legyen.</translation>
</message>
<message>
<location line="+7"/>
<source>Complex type %1 must have the same simple type as its base class %2.</source>
- <translation>%1 komplex típusnak ugyanazt az egyszerű típust kell tartalmaznia a(z) %2 alap osztálya számára.</translation>
+ <translation>%1 komplex típusnak ugyanazzal az egyszerű típussal kell rendelkeznie, mint %2 ősosztályának.</translation>
</message>
<message>
<location line="+67"/>
<source>Complex type %1 cannot be derived from base type %2%3.</source>
- <translation>%1 komplex típus nem származtatható a(z) %2%3 alap típusból.</translation>
+ <translation>%1 komplex típus nem származhat %2%3 őstípusból.</translation>
</message>
<message>
<location line="+14"/>
<source>Attributes of complex type %1 are not a valid restriction from the attributes of base type %2: %3.</source>
- <translation>%1 komplex típus attribútumai nem egy érvényes korlátozások a(z) %2 alap típus attribútumaitól: %3.</translation>
+ <translation>%1 komplex típus attribútumai nem érvényes megszorítások %2 őstípus attribútumai alapján: %3.</translation>
</message>
<message>
<location line="+14"/>
<source>Complex type %1 with simple content cannot be derived from complex base type %2.</source>
- <translation>%1 komplex típus egyszerű tartalommal nem származtatható %2 komplex alap típusból.</translation>
+ <translation>%1 egyszerű tartalmú komplex típus nem származhat %2 komplex típusból.</translation>
</message>
<message>
<location line="+35"/>
<source>Item type of simple type %1 cannot be a complex type.</source>
- <translation>A(z) %1 egyszerű típus elemi típusa nem lehet egy komplex típus.</translation>
+ <translation>%1 egyszerű típusú elem típusa nem lehet komplex típus.</translation>
</message>
<message>
<location line="+44"/>
<source>Member type of simple type %1 cannot be a complex type.</source>
- <translation>%1 egyszerű típus tag típusa nem lehet egy komplex típus.</translation>
+ <translation>%1 egyszerű típusú tag típus nem lehet komplex típus.</translation>
</message>
<message>
<location line="+8"/>
<source>%1 is not allowed to have a member type with the same name as itself.</source>
- <translation>%1 nem engedélyzett, hogy tartalmazzon egy tag típust ugyanazzal a névvel, mint a saját neve.</translation>
+ <translation>%1 nem tartalmazhat olyan tag típust, melynek neve egyezik önmaga nevével.</translation>
</message>
<message>
<location line="+83"/>
<location line="+29"/>
<location line="+34"/>
<source>%1 facet collides with %2 facet.</source>
- <translation>%1 oldal ütközik a(z) %2 oldallal.</translation>
+ <translation>%1 facet ütközik %2 facet-tel.</translation>
</message>
<message>
<location line="-20"/>
<source>%1 facet must have the same value as %2 facet of base type.</source>
- <translation>%1 oldalnak ugyanazt az értéket kell tartalmaznia, mint az alap típus %2 oldalának.</translation>
+ <translation>%1 facet-nek %2 facet-ével azonos őstípusú értéke kell legyen.</translation>
</message>
<message>
<location line="+37"/>
<source>%1 facet must be equal or greater than %2 facet of base type.</source>
- <translation>%1 oldalnak nagyobbnak vagy egyenlőnek kell lennie, mint az alap típus %2 oldalának.</translation>
+ <translation>%1 facet-nek egyenlőnek vagy nagyobbnak kell lennie %2 facet-nél őstípus alapján.</translation>
</message>
<message>
<location line="+19"/>
@@ -9326,541 +12497,319 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+34"/>
<location line="+35"/>
<source>%1 facet must be less than or equal to %2 facet of base type.</source>
- <translation>%1 oldalnal kisebb vagy egyenlőnek kell lennie az alap típus %2 oldalánál.</translation>
+ <translation>%1 facet-nek egyenlőnek vagy kisebbnek kell lennie %2 facet-nél őstípus alapján.</translation>
</message>
<message>
<location line="-389"/>
<source>%1 facet contains invalid regular expression</source>
- <translation>%1 oldal érvénytelen reguláris kifejezéseket tartalmaz</translation>
+ <translation>%1 facet érvénytelen reguláris kifejezést tartalmaz</translation>
</message>
<message>
<location line="+15"/>
<source>Unknown notation %1 used in %2 facet.</source>
- <translation>%1 ismeretlen jelölési mód van használva a(z) %2 oldalon.</translation>
+ <translation>Ismeretlen jelölés %1 a(z) %2 facet-ben.</translation>
</message>
<message>
<location line="+20"/>
<source>%1 facet contains invalid value %2: %3.</source>
- <translation>%1 oldal érvénytelen %2 értéket tartalmaz: %3.</translation>
+ <translation>%1 facet értéke érvénytelen %2: %3.</translation>
</message>
<message>
<location line="+22"/>
<source>%1 facet cannot be %2 or %3 if %4 facet of base type is %5.</source>
- <translation>%1 oldal nem lehet %2 vagy %3, ha az alap típus %4 oldala %5.</translation>
+ <translation>%1 facet nem lehet %2 vagy %3, ha %4 facet, mint őstípus %5.</translation>
</message>
<message>
<location line="+11"/>
<source>%1 facet cannot be %2 if %3 facet of base type is %4.</source>
- <translation>%1 oldal nem lehet %2, ha az alap típus %3 oldala %4.</translation>
+ <translation>%1 facet nem lehet %2, ha %3 facet, mint őstípus %4.</translation>
</message>
<message>
<location line="+20"/>
<location line="+55"/>
<location line="+230"/>
<source>%1 facet must be less than or equal to %2 facet.</source>
- <translation>%1 oldalnak kisebb egyenlőnek kell lennie a(z) %2 oldalnál.</translation>
+ <translation>%1 facet-nek kisebbnek vagy egyenlőnek kell lennie, mint %2 facet.</translation>
</message>
<message>
<location line="-257"/>
<location line="+134"/>
<location line="+82"/>
<source>%1 facet must be less than %2 facet of base type.</source>
- <translation>%1 oldalnak kisebbnek kell lennie az alap típus %2 oldalánál.</translation>
+ <translation>%1 facet-nek kisebbnek kell lennie %2 facet-nél, mint őstípusnál.</translation>
</message>
<message>
<location line="-201"/>
<location line="+79"/>
<source>%1 facet and %2 facet cannot appear together.</source>
- <translation>%1 oldal és %2 oldal nem fordulhat elő együtt.</translation>
+ <translation>%1 és %2 facet-ek nem jelenhetnek meg együttesen.</translation>
</message>
<message>
<location line="-27"/>
<location line="+12"/>
<location line="+113"/>
<source>%1 facet must be greater than %2 facet of base type.</source>
- <translation>%1 oldalnak nagyobbnak kell lennie, mint az alaptípus %2 oldalának.</translation>
+ <translation>%1 facet-nek nagyobbnak kell lennei, %2 facet-nél, mint őstípusnál.</translation>
</message>
<message>
<location line="-86"/>
<location line="+58"/>
<source>%1 facet must be less than %2 facet.</source>
- <translation>%1 oldalnak kisebbnek kell lenni a(z) %2 oldalnál.</translation>
+ <translation>%1 facet kisebb kell legyen, mint %2 facet.</translation>
</message>
<message>
<location line="-42"/>
<location line="+58"/>
<source>%1 facet must be greater than or equal to %2 facet of base type.</source>
- <translation>%1 oldalnak nagyobb vagy egyenlőnek kell lennie az alap típus %2 oldalánál.</translation>
+ <translation>%1 facet-nek egyenlőnek vagy nagyobbnak kell lennie %2 facet-nél mint őstípusnál.</translation>
</message>
<message>
<location line="+113"/>
<source>Simple type contains not allowed facet %1.</source>
- <translation>Egyszerű típus nem tartalmazhat %1 oldalt.</translation>
+ <translation>Egyszerű típus nem megengedett %1 facet-et tartalmaz.</translation>
</message>
<message>
<location line="+12"/>
<source>%1, %2, %3, %4, %5 and %6 facets are not allowed when derived by list.</source>
- <translation>%1, %2, %3, %4, %5 és %6 oldalak nem engedélyezettek listáról származtatáskor.</translation>
+ <translation>%1, %2, %3, %4, %5 és %6 facet-ek nem megengedettek, ha lista alapján származtatunk.</translation>
</message>
<message>
<location line="+16"/>
<source>Only %1 and %2 facets are allowed when derived by union.</source>
- <translation>Csak a(z) %1 és %2 oldalak engedélyezettek union származtatásakor.</translation>
+ <translation>Csak %1 és %2 facet-ek engedélyezettek union típusú származtatás esetén.</translation>
</message>
<message>
<location line="+23"/>
<location line="+16"/>
<source>%1 contains %2 facet with invalid data: %3.</source>
- <translation>%1 %2 oldalt tartalmaz érvénytelen adattal: %3.</translation>
+ <translation>%1 érvénytelen adattartalmú %2 facet-et tartalmaz: %3.</translation>
</message>
<message>
<location line="+24"/>
<source>Attribute group %1 contains attribute %2 twice.</source>
- <translation>A(z) %1 attribútum csoport a(z) %2 attribútumot kétszer tartalmazza.</translation>
+ <translation>%1 attribútum csoport kétszer tartalmazza %2 attribútumot.</translation>
</message>
<message>
<location line="+9"/>
<source>Attribute group %1 contains two different attributes that both have types derived from %2.</source>
- <translation>A(z) %1 attribútum csoport két különböző attribútumot tartalmaz, melyek közül mindkettő %2-ból számaztatott típusokat tartalmaz.</translation>
+ <translation>%1 attribútum csoport két különböző attribútumot tartalmaz, melyek típusa %2-ből származtatott.</translation>
</message>
<message>
<location line="+8"/>
<source>Attribute group %1 contains attribute %2 that has value constraint but type that inherits from %3.</source>
- <translation>A(z) %1 attribútum csoport %2 attribútumot tartalmaz, amely olyan megszorított értéket tartalmaz, kivéve a típust, amit %3-ból örököl.</translation>
+ <translation>%1 attribútum csoport %2 attribútumot tartalmaz, aminek érték megkötése van, de típusa %3-ból származik.</translation>
</message>
<message>
<location line="+23"/>
<source>Complex type %1 contains attribute %2 twice.</source>
- <translation>A(z) %1 összetett típus %2 attribútumot tartalmazza kétszer.</translation>
+ <translation>%1 komplex típus %2 attribútumot kétszer tartalmazza.</translation>
</message>
<message>
<location line="+9"/>
<source>Complex type %1 contains two different attributes that both have types derived from %2.</source>
- <translation>%1 komplex típus két különböző attribútumot tartalmaz, amelyek közül mindkettő %2-ból származtatott típusokat tartalmaz.</translation>
+ <translation>%1 komplex típus két különböző attribútumot tartalmaz, melyek típusa %2-ből származtatott.</translation>
</message>
<message>
<location line="+8"/>
<source>Complex type %1 contains attribute %2 that has value constraint but type that inherits from %3.</source>
- <translation>%1 kompex típus %2 attribútumot tartalmaz, aminek megszorító értéke van, kivéve a típust, amit a(z) %3-ból örököl.</translation>
+ <translation>%1 komplex típus %2 attribútumot tartalmaz, aminek érték megkötése van, de típusa %3-ból származik.</translation>
</message>
<message>
<location line="+43"/>
<source>Element %1 is not allowed to have a value constraint if its base type is complex.</source>
- <translation>%1 elem nem tartalmazhat egy korlátozott értéket, ha az alaptípusa komplex.</translation>
+ <translation>%1 elemre nem lehet érték megkötés, ha őstípusa komplex.</translation>
</message>
<message>
<location line="+7"/>
<source>Element %1 is not allowed to have a value constraint if its type is derived from %2.</source>
- <translation>%1 elem nem tartalmazhat egy korlátozott értéket, ha a típusa a(z) %2-ből származik.</translation>
+ <translation>%1 elemre nem lehet érték megkötés, ha típusa %2-ből származtatott.</translation>
</message>
<message>
<location line="+10"/>
<location line="+11"/>
<source>Value constraint of element %1 is not of elements type: %2.</source>
- <translation>%1 elem korlátozó értéke nem elemi típus: %2.</translation>
+ <translation>%1 elem érték megkötése nem a következő elemtípusú: %2.</translation>
</message>
<message>
<location line="+13"/>
<source>Element %1 is not allowed to have substitution group affiliation as it is no global element.</source>
- <translation>%1 elem nem tartalmazhat helyettesítési csoport egyesítést, mert nem egy globális elem.</translation>
+ <translation>%1 elemnek nem lehet helyettesítő csoport kapcsolata, mivel nem globális elem.</translation>
</message>
<message>
<location line="+28"/>
<source>Type of element %1 cannot be derived from type of substitution group affiliation.</source>
- <translation>%1 elem típus nem származtatható helyettesítési csoport egyesítési típusból.</translation>
+ <translation>%1 elem típusa nem származhat helyettesítő csoport kapcsolat típusból.</translation>
</message>
<message>
<location line="+41"/>
<source>Value constraint of attribute %1 is not of attributes type: %2.</source>
- <translation>%1 attribútum korlátozó értéke nem attribútum típus: %2.</translation>
+ <translation>%1 attribútum érték megkötése nem az attribútum típusával egyező: %2.</translation>
</message>
<message>
<location line="+9"/>
<source>Attribute %1 has value constraint but has type derived from %2.</source>
- <translation>%1 attribútumnak korlátozó értéke van, de %2-ből származtatott típust tartalmaz.</translation>
+ <translation>%1 attribútumnak érték megkötése van, de típusa %2-ből származtatott.</translation>
</message>
<message>
<location line="+56"/>
<source>%1 attribute in derived complex type must be %2 like in base type.</source>
- <translation>%1 attribútum egy származtatott komplex típusban %2-nek kell lennie, mint az alap típusban.</translation>
+ <translation>%1 attribútumnak %2-nek kell lennie a származtatott komplex típusban, úgy mint az őstípusban.</translation>
</message>
<message>
<location line="+11"/>
<source>Attribute %1 in derived complex type must have %2 value constraint like in base type.</source>
- <translation>A származtatott komplex típusban levő %1 attribútumnak %2 érték korlátozót kell tartalmaznia, mint az alap típusban.</translation>
+ <translation>Származtatott komplex típusban %1 attribútumnak %2 érték megkötésének kell lennie, mint az őstípusban.</translation>
</message>
<message>
<location line="+9"/>
<source>Attribute %1 in derived complex type must have the same %2 value constraint like in base type.</source>
- <translation>Származtatott komplex típusban levő %1 attribútumnak ugyanazt a(z) %2 korlátozott értéket kell tartalmaznia, mint az alap típusban.</translation>
+ <translation>Származtatott komplex típusban %1 attribútumnak %2 érték megkötésének kell lennie, mint az őstípusban.</translation>
</message>
<message>
<location line="+7"/>
<source>Attribute %1 in derived complex type must have %2 value constraint.</source>
- <translation>Származtatott komplex típusban levő %1 attribútumnak %2 érték korlátozót kell tartalmaznia.</translation>
+ <translation>Származtatott komplex típus %1 attribútumának %2 érték megkötésének kell lennie.</translation>
</message>
<message>
<location line="+18"/>
<source>processContent of base wildcard must be weaker than derived wildcard.</source>
- <translation>Az alap helyettesítő jel folyamat tartalma gyengébb kell legyen, mint a származtatott helyettesítő jel.</translation>
+ <translation>Az ős helyettesítő kifejezésének processContent-je gyengébb kell legyen, mint a származtatott helyettesítő.</translation>
</message>
<message>
<location line="+39"/>
<location line="+15"/>
<source>Element %1 exists twice with different types.</source>
- <translation>%1 elem kétszer létezik különböző típusokkal.</translation>
+ <translation>%1 elem kétszer létezik eltérő típussal.</translation>
</message>
<message>
<location line="+28"/>
<source>Particle contains non-deterministic wildcards.</source>
- <translation>A részecske nem meghatározott helyettesítő jeleket tartalmaz.</translation>
+ <translation>A részecske nem determinisztikus helyettesítőket tartalmaz.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/schema/qxsdschemahelper.cpp" line="+691"/>
<location line="+63"/>
<source>Base attribute %1 is required but derived attribute is not.</source>
- <translation>A(z) %1 alap attribútum szükséges, de a származtatott attribútum nem.</translation>
+ <translation>%1 ős attribútum megkövetelt, de a származtatott nem.</translation>
</message>
<message>
<location line="-57"/>
<source>Type of derived attribute %1 cannot be validly derived from type of base attribute.</source>
- <translation>A(z) %1 származtatott attribútum típusa nem lehet érvényesen származtatni az alap attribútum típusból.</translation>
+ <translation>%1 származtatott attribútum típusa nem származtatható érvényesen az ős attribútum típusából.</translation>
</message>
<message>
<location line="+28"/>
<source>Value constraint of derived attribute %1 does not match value constraint of base attribute.</source>
- <translation>&apos;%1 származtatott attribútum érték korlátozója nem egyezik az alap attribútum érték korlátozójával.</translation>
+ <translation>%1 származtatott attribútum érték megkötése nem egyezik az ős attribútuméval.</translation>
</message>
<message>
<location line="+5"/>
<source>Derived attribute %1 does not exist in the base definition.</source>
- <translation>%1 származtatott attribútum nem létezik az alap definícióban.</translation>
+ <translation>%1 származtatott attribútum nem létezik az ős definíciójában.</translation>
</message>
<message>
<location line="+11"/>
<source>Derived attribute %1 does not match the wildcard in the base definition.</source>
- <translation>%1 származtatott attribútum nem egyezik a helyettesítő jellel az alap definícióban.</translation>
+ <translation>%1 származtatott attribútum nem illeszkedik az ősben megadott helyettesítőre.</translation>
</message>
<message>
<location line="+17"/>
<source>Base attribute %1 is required but missing in derived definition.</source>
- <translation>%1 alap attribútum szükséges, de hiáynzik a származtatott definícióban.</translation>
+ <translation>%1 ős attribútum megkövetelt, de hiányzik a leszármazott definíciójából.</translation>
</message>
<message>
<location line="+9"/>
<source>Derived definition contains an %1 element that does not exists in the base definition</source>
- <translation>A származtatot definíció egy %1 elemet tartalmaz, ami nem létezik az alap definícióban</translation>
+ <translation>A leszármazott definíciója olyan %1 elemet tartalmaz, ami nem létezik az ős definíciójában</translation>
</message>
<message>
<location line="+5"/>
<source>Derived wildcard is not a subset of the base wildcard.</source>
- <translation>Származtatott helyettesítőjel nem az alap helyettesítőjel egy részhalmaza.</translation>
+ <translation>A származtatott helyettesítő nem részhalmaza az ősnek.</translation>
</message>
<message>
<location line="+5"/>
<source>%1 of derived wildcard is not a valid restriction of %2 of base wildcard</source>
- <translation>Származtaott helyettesítő jel %1-e nem az alap helyettesítőjel %2-nek egy érvényes korlátozója</translation>
+ <translation>Leszármazott helyettesítő %1 része nem érvényes korlátozása az ős %2 részének</translation>
</message>
<message>
<location line="+23"/>
<source>Attribute %1 from base type is missing in derived type.</source>
- <translation>Az alap típus %1 attribútuma hiányzik a származtatott típusban.</translation>
+ <translation>Az őstípus %1 attribútuma hiányzik a származtatott típusból.</translation>
</message>
<message>
<location line="+5"/>
<source>Type of derived attribute %1 differs from type of base attribute.</source>
- <translation>A(z) %1 származtatott típus az alap attribútum típusától különbözik.</translation>
+ <translation>%1 származtatott attribútum típusa eltér az ős attribútum típusától.</translation>
</message>
<message>
<location line="+8"/>
<source>Base definition contains an %1 element that is missing in the derived definition</source>
- <translation>Az alap definíció egy %1 elemet tartalmaz, ami hiányzik a származtatott definícióból</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/schema/qxsdschemaresolver.cpp" line="+354"/>
- <source>%1 references unknown %2 or %3 element %4.</source>
- <translation>%1 ismeretlen %2 vagy %3 elemre hivatkozik %4.</translation>
- </message>
- <message>
- <location line="+10"/>
- <source>%1 references identity constraint %2 that is no %3 or %4 element.</source>
- <translation>%1 %2 indentitás korlátozóra hivatkozik, ami nem %3 vagy %4 elem.</translation>
- </message>
- <message>
- <location line="+10"/>
- <source>%1 has a different number of fields from the identity constraint %2 that it references.</source>
- <translation>%1 mezők egy különböző számát tartalmazza a(z) %2 indetitás korlátozóbol, amelyik erre hivatkozik.</translation>
- </message>
- <message>
- <location line="+23"/>
- <source>Base type %1 of %2 element cannot be resolved.</source>
- <translation>%1 elem %2 alap típusát nem lehet megfejteni.</translation>
- </message>
- <message>
- <location line="+84"/>
- <source>Item type %1 of %2 element cannot be resolved.</source>
- <translation>%2 elem %1 elem típusát nem lehet megfejteni.</translation>
- </message>
- <message>
- <location line="+31"/>
- <source>Member type %1 of %2 element cannot be resolved.</source>
- <translation>%2 elem %1 tag típusát nem lehet megoldani.</translation>
- </message>
- <message>
- <location line="+28"/>
- <location line="+408"/>
- <location line="+30"/>
- <source>Type %1 of %2 element cannot be resolved.</source>
- <translation>%2 elem %1 típusát nem lehet megoldani.</translation>
- </message>
- <message>
- <location line="-416"/>
- <source>Base type %1 of complex type cannot be resolved.</source>
- <translation>Komplex típus %1 alap típusát nem lehet megfejteni.</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>%1 cannot have complex base type that has a %2.</source>
- <translation>%1 nem tartalmazhat komplex alap típusokat, egy %2-t tartalmaz.</translation>
- </message>
- <message>
- <location line="+279"/>
- <source>Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.</source>
- <translation>%1 komplex típus tartalmi modelle %2 elemet tartalmaz, tehát nem származtatható kiterjesztésben egy nem üres típusból.</translation>
- </message>
- <message>
- <location line="+6"/>
- <source>Complex type %1 cannot be derived by extension from %2 as the latter contains %3 element in its content model.</source>
- <translation>%1 komplex nem típus nem származtatható kiterjesztésben %2-ből, mert az utóbbi %3 elemet tartalmaz a tartalmi modellében.</translation>
- </message>
- <message>
- <location line="+101"/>
- <source>Type of %1 element must be a simple type, %2 is not.</source>
- <translation>%1 elem típusnak egy egyszerű típusnak kell, de %2 nem az.</translation>
- </message>
- <message>
- <location line="+62"/>
- <source>Substitution group %1 of %2 element cannot be resolved.</source>
- <translation>%2 elem %1 helyettesítési csoportját nem lehet megoldani.</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>Substitution group %1 has circular definition.</source>
- <translation>%1 helyettesítési csoport cirkuláris definíciót tartalmaz.</translation>
- </message>
- <message>
- <location line="+120"/>
- <location line="+7"/>
- <source>Duplicated element names %1 in %2 element.</source>
- <translation>Duplikát %1 elemnév %2 elemben.</translation>
- </message>
- <message>
- <location line="+29"/>
- <location line="+52"/>
- <location line="+71"/>
- <location line="+28"/>
- <source>Reference %1 of %2 element cannot be resolved.</source>
- <translation>%2 elem %1 hivatkozását nem lehet megoldani.</translation>
- </message>
- <message>
- <location line="-138"/>
- <source>Circular group reference for %1.</source>
- <translation>Cirkuláris csoport hivatkozás %1-re.</translation>
- </message>
- <message>
- <location line="+16"/>
- <source>%1 element is not allowed in this scope</source>
- <translation>%1 elem nem engedélyezett ebben a hatókörben</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>%1 element cannot have %2 attribute with value other than %3.</source>
- <translation>%1 elem nem tartalmazhat %2 attribútumot %3-tól eltérő értékkel.</translation>
- </message>
- <message>
- <location line="+8"/>
- <source>%1 element cannot have %2 attribute with value other than %3 or %4.</source>
- <translation>%1 element nem tartalmazhat %2 attribútumot %3 vagy %4-től eltérő értékkel.</translation>
- </message>
- <message>
- <location line="+91"/>
- <source>%1 or %2 attribute of reference %3 does not match with the attribute declaration %4.</source>
- <translation>%3 hivatkozás %1 vagy %2 attribútuma nem egyezik meg a(z) %4 attribútum deklarációval.</translation>
- </message>
- <message>
- <location line="+25"/>
- <source>Attribute group %1 has circular reference.</source>
- <translation>%1 attribútum csoport cirkuláris hivatkozást tartalmaz.</translation>
- </message>
- <message>
- <location line="+131"/>
- <source>%1 attribute in %2 must have %3 use like in base type %4.</source>
- <translation>%2-ben található %1 attribútumnak %3 használatát kell tartalmaznia, mint a(z) %4 alap típusban.</translation>
- </message>
- <message>
- <location line="+52"/>
- <source>Attribute wildcard of %1 is not a valid restriction of attribute wildcard of base type %2.</source>
- <translation>%1 attribútum helyettesítő jele nem a(z) %2 alap típus attribútum helyettesítő jelének egy érvényes korlátozása.</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>%1 has attribute wildcard but its base type %2 has not.</source>
- <translation>%1 attribútum helyettesítő jelet tartalmaz, de a(z) %2 alap típusa nem.</translation>
- </message>
- <message>
- <location line="+26"/>
- <source>Union of attribute wildcard of type %1 and attribute wildcard of its base type %2 is not expressible.</source>
- <translation>%2 alaptípusának attribútum helyettesítő jele és a(z) %1 típus attribútum helyettesítő jelének union-ja nem kifejezhető.</translation>
- </message>
- <message>
- <location line="+48"/>
- <source>Enumeration facet contains invalid content: {%1} is not a value of type %2.</source>
- <translation>Felsorolás oldal érvénytelen tartalmat tartalmaz. {%1} nem egy érvényes %2 típus érték.</translation>
- </message>
- <message>
- <location line="+10"/>
- <source>Namespace prefix of qualified name %1 is not defined.</source>
- <translation>%1 minősített név névtér előtagja nincs definiálva.</translation>
- </message>
- <message>
- <location line="+51"/>
- <location line="+18"/>
- <source>%1 element %2 is not a valid restriction of the %3 element it redefines: %4.</source>
- <translation>%2 elem %1 nem a(z) %3 elem egy érvényes korlátozása, újradefininálja: %4.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/schema/qxsdparticlechecker.cpp" line="+165"/>
- <source>Empty particle cannot be derived from non-empty particle.</source>
- <translation>Üres részecskét nem lehet egy üres részecskéből származtatni.</translation>
- </message>
- <message>
- <location line="+15"/>
- <source>Derived particle is missing element %1.</source>
- <translation>Származtatott részecskének van egy %1 hiányzó eleme.</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>Derived element %1 is missing value constraint as defined in base particle.</source>
- <translation>%1 származtatott elem hiányol egy érték korlátozót, ami az alap részecskében van definiálva.</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>Derived element %1 has weaker value constraint than base particle.</source>
- <translation>%1 származtatott elem gyengébb érték korlátozót tartalmaz, mint az alap részecske.</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>Fixed value constraint of element %1 differs from value constraint in base particle.</source>
- <translation>%1 elem fix érték korlátozója különbözik az alap részecskében található érték korlátozótól.</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>Derived element %1 cannot be nillable as base element is not nillable.</source>
- <translation>%1 származtatott elem nem lehet nullázható, mint ahogy az alap elem sem nullázható.</translation>
- </message>
- <message>
- <location line="+10"/>
- <source>Block constraints of derived element %1 must not be more weaker than in the base element.</source>
- <translation>%1 származtatott elem blokk korlátozója nem lehet gyengébb, mint az alap elemben.</translation>
- </message>
- <message>
- <location line="+11"/>
- <source>Simple type of derived element %1 cannot be validly derived from base element.</source>
- <translation>%1 származtatott elem egyszerű típusa nem származtatható érvényesen az alap elemből.</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>Complex type of derived element %1 cannot be validly derived from base element.</source>
- <translation>%1 származtatott elem komplex típusa nem származtatható érvényesen az alap elemből.</translation>
- </message>
- <message>
- <location line="+24"/>
- <source>Element %1 is missing in derived particle.</source>
- <translation>%1 elem hiányzik a származtott récseszkében.</translation>
- </message>
- <message>
- <location line="+18"/>
- <source>Element %1 does not match namespace constraint of wildcard in base particle.</source>
- <translation>%1 elem nem egyezik meg az alap részecskében található helyettesítő jel névtér korlátozójával.</translation>
- </message>
- <message>
- <location line="+11"/>
- <source>Wildcard in derived particle is not a valid subset of wildcard in base particle.</source>
- <translation>Helyettesítő jel a származtatott részecskénen nem az alap részecskében található helyettesítő jel egy érvényes részhalmaza.</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>processContent of wildcard in derived particle is weaker than wildcard in base particle.</source>
- <translation>A származtatott részecskében található helyettesítő jel folyamatTartalma gyengébb, mint az alap részecskében található helyettesítő jel.</translation>
- </message>
- <message>
- <location line="+240"/>
- <source>Derived particle allows content that is not allowed in the base particle.</source>
- <translation>Származtatott részecske engedélyezi a tartalmat, ami nem engedélyezett az alap részecskében.</translation>
+ <translation>Az ős definíciója tartalmaz olyan %1 elemet, ami hiányzik a leszármazott definíciójából</translation>
</message>
<message>
<location filename="../src/xmlpatterns/schema/qxsdschemaparser.cpp" line="+170"/>
<source>Can not process unknown element %1, expected elements are: %2.</source>
- <translation>Nem lehet feldolgozni ismeretlen %1 elemet, várt elemek: %2.</translation>
+ <translation>%1 ismeretlen elemet nem lehet feldolgozni, a várt elemek: %2.</translation>
</message>
<message>
<location line="+13"/>
<source>Element %1 is not allowed in this scope, possible elements are: %2.</source>
- <translation>%1 elem nem engedélyezett ebben a hatórközben, lehetséges elemek: %2.</translation>
+ <translation>%1 elem nem megengedett ebben a hatókörben, a lehetséges elemek: %2.</translation>
</message>
<message>
<location line="+16"/>
<source>Child element is missing in that scope, possible child elements are: %1.</source>
- <translation>Gyermek elem hiányzik abban a hatókörben, lehetséges gyermek elemek: %1.</translation>
+ <translation>Gyermek elem hiányzik abból a hatókörből, lehetséges gyermek elemek: %1.</translation>
</message>
<message>
- <location line="+127"/>
+ <location line="+143"/>
<source>Document is not a XML schema.</source>
- <translation>Dokumentum nem egy XML terv.</translation>
+ <translation>A dokumentum nem egy XML séma.</translation>
</message>
<message>
<location line="+22"/>
<source>%1 attribute of %2 element contains invalid content: {%3} is not a value of type %4.</source>
- <translation>%2 elem %1 attribútuma érvénytelen tartalmat tartalmaz: {%3} nem egy %4 típus érték.</translation>
+ <translation>%2 elem %1 attribútuma érvénytelen tartalmú: {%3} érvénytelen %4 típusú érték.</translation>
</message>
<message>
<location line="+6"/>
<source>%1 attribute of %2 element contains invalid content: {%3}.</source>
- <translation>%2 elem %1 attribútuma érvénytelen tartalmat tartalmaz: {%3}.</translation>
+ <translation>%2 elem %1 attribútuma érvénytelen tartalmú: {%3}.</translation>
</message>
<message>
<location line="+26"/>
<source>Target namespace %1 of included schema is different from the target namespace %2 as defined by the including schema.</source>
- <translation>A beleértett terv %1 cél névtere különbözik a %2 cél névtértől, amit a beleértett terv által lett definiálva.</translation>
+ <translation>%1 beemelt séma cél-névtere különbözik a beemelő sémában definiált %2 cél-névtértől.</translation>
</message>
<message>
<location line="+14"/>
<location line="+11"/>
<source>Target namespace %1 of imported schema is different from the target namespace %2 as defined by the importing schema.</source>
- <translation>Az importált terv %1 cél névtere különbözik a(z) %2 cél névtértől, ami az importált terv által van definiálva.</translation>
+ <translation>%1 importált séma cél-névtere különbözik az importáló sémában definiált %2 cél-névtértől.</translation>
</message>
<message>
- <location line="+237"/>
+ <location line="+243"/>
<source>%1 element is not allowed to have the same %2 attribute value as the target namespace %3.</source>
- <translation>%1 elem nem tartalmazhatja ugyanazt a(z) %2 attribútum értéket, mint a(z) %3 cél névtér.</translation>
+ <translation>%1 elemnek nem lehet ugyanaz a %2 attribútum értéke, mint %3 cél-névtérnek.</translation>
</message>
<message>
<location line="+8"/>
<source>%1 element without %2 attribute is not allowed inside schema without target namespace.</source>
- <translation>%1 elem %2 attribútum nélkül nem engedélyezett a vázlaton belül cél névtér nélkül.</translation>
+ <translation>%2 attribútum nélküli %1 elem nem engedélyezett cél-névtér nélküli séma belsejében.</translation>
</message>
<message>
- <location line="+833"/>
+ <location line="+851"/>
<location line="+158"/>
<source>%1 element is not allowed inside %2 element if %3 attribute is present.</source>
- <translation>%1 elem nem engedélyezett a(z) %2 elemen belül, ha %3 attribútum van nyújtva.</translation>
+ <translation>%1 elem nem megengedett %2 elemen belül, ha %3 attribútum meg van adva.</translation>
</message>
<message>
<location line="-97"/>
<location line="+119"/>
<location line="+92"/>
<source>%1 element has neither %2 attribute nor %3 child element.</source>
- <translation>%1 elem nem tartalmaz %2 attribútumot és %3 gyermek elemet sem.</translation>
+ <translation>%1 elemnek sem %2 attribútuma, sem %3 gyermek eleme nincs.</translation>
</message>
<message>
<location line="+835"/>
@@ -9878,23 +12827,23 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+11"/>
<location line="+11"/>
<source>%1 element with %2 child element must not have a %3 attribute.</source>
- <translation>%1 elem %2 gyermek elemmel nem tartalmazhat egy %3 attribútumot.</translation>
+ <translation>%2 gyermek elemmel rendelkező %1 elemnek nem lehet %3 attribútuma.</translation>
</message>
<message>
<location line="-1325"/>
<source>%1 attribute of %2 element must be %3 or %4.</source>
- <translation>%2 elem %1 attribútumának %3 vagy %4-nek kell lennie.</translation>
+ <translation>%2 elem %1 attribútumának értéke %3 vagy %4 kell legyen.</translation>
</message>
<message>
<location line="+36"/>
<source>%1 attribute of %2 element must have a value of %3.</source>
- <translation>%2 elem %1 attribútumának %3 egy értékét tartalmaznia kell.</translation>
+ <translation>%2 elem %1 attribútumának értéke %3 kell legyen.</translation>
</message>
<message>
<location line="+7"/>
<location line="+34"/>
<source>%1 attribute of %2 element must have a value of %3 or %4.</source>
- <translation>%2 elem %1 attribútumának tartalmaznia kell %3 vagy %4 egy értékét.</translation>
+ <translation>%2 elem %1 attribútumának értéke %3 vagy %4 kell legyen.</translation>
</message>
<message>
<location line="+319"/>
@@ -9912,81 +12861,81 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<location line="+6"/>
<location line="+77"/>
<source>%1 element must not have %2 and %3 attribute together.</source>
- <translation>%1 elemnek tartalmaznia kell %2 és %3 attribútumokat együttesen.</translation>
+ <translation>%1 elemnek nem lehet egyidejűleg %2 és %3 attribútuma.</translation>
</message>
<message>
<location line="-768"/>
<location line="+222"/>
<source>Content of %1 attribute of %2 element must not be from namespace %3.</source>
- <translation>%2 elem %1 attribútumának tartalmának nem szabad a(z) %3 névtérből lennie.</translation>
+ <translation>%2 elem %1 attribútumának tartalma nem lehet %3 névtérből való.</translation>
</message>
<message>
<location line="-215"/>
<location line="+222"/>
<source>%1 attribute of %2 element must not be %3.</source>
- <translation>%2 elem %1 attribútumának nem szabad %3-nak lennie.</translation>
+ <translation>%2 elem %1 attribútuma nem lehet %3.</translation>
</message>
<message>
<location line="-64"/>
<source>%1 attribute of %2 element must have the value %3 because the %4 attribute is set.</source>
- <translation>%2 elem %1 attribútumának tartalmaznia kell %3 értéket, mert %4 attribútum be van állítva.</translation>
+ <translation>%2 elem %1 attribútumának értéke %3 kell legyen, mert a(z) %4 attribútum van megadva.</translation>
</message>
<message>
<location line="+187"/>
<source>Specifying use=&apos;prohibited&apos; inside an attribute group has no effect.</source>
- <translation>Használat meghatározásának = &apos;tiltott&apos; egy attribútum csoportját belül nincsen hatása.</translation>
+ <translation>use=&apos;prohibited&apos; megadása egy attribútum csoporton belül hatástalan.</translation>
</message>
<message>
<location line="+353"/>
<source>%1 element must have either %2 or %3 attribute.</source>
- <translation>%1 elemnek vagy %2 vagy %3 attribútumot tartalmaznia kell.</translation>
+ <translation>%1 elemnek vagy %2 vagy %3 attribútumának lennie kell.</translation>
</message>
<message>
<location line="+554"/>
<source>%1 element must have either %2 attribute or %3 or %4 as child element.</source>
- <translation>%1 elemnek tartalmaznia kell vagy %2 vagy %3 vagy %4 attribútumot, mint ahogy a gyermek elem.</translation>
+ <translation>%1 elemnek vagy %2 attribútumának, vagy %3 vagy %4 gyermek elemének lennie kell.</translation>
</message>
<message>
<location line="+55"/>
<source>%1 element requires either %2 or %3 attribute.</source>
- <translation>%1 elem vagy %2 vagy %3 attribútumot igényli.</translation>
+ <translation>%1 elemnek %2 vagy %3 attribútumát meg kell adni.</translation>
</message>
<message>
<location line="+19"/>
<source>Text or entity references not allowed inside %1 element</source>
- <translation>Szöveg avgy entitás hivatkozás nem engedélyezett a(z) %1 elemen belül</translation>
+ <translation>Szöveg és entitás referenciák nem engedélyezettek %1 elemen belül</translation>
</message>
<message>
<location line="+41"/>
<location line="+112"/>
<source>%1 attribute of %2 element must contain %3, %4 or a list of URIs.</source>
- <translation>%2 elem %1 attribútumának tartalmaznia kell %3, %4 vagy URI-k egy listáját.</translation>
+ <translation>%2 elem %1 attribútumának %3-t, %4-t vagy URI-k listáját kell tartalmaznia.</translation>
</message>
<message>
<location line="+126"/>
<source>%1 element is not allowed in this context.</source>
- <translation>%1 elem nem engedélyezett ebben a szöveg környezetben.</translation>
+ <translation>%1 elem nem megengedett ebben a kontextusban.</translation>
</message>
<message>
<location line="+53"/>
<source>%1 attribute of %2 element has larger value than %3 attribute.</source>
- <translation>%2 elem %1 attribútuma nagyobb értéket tartalmaz, mint a %3 attribútum.</translation>
+ <translation>%2 elem %1 attribútumának értéka nagyobb, mint a(z) %3 attribútumé.</translation>
</message>
<message>
<location line="+25"/>
<source>Prefix of qualified name %1 is not defined.</source>
- <translation>A(z) %1 minősített név előtagja nem definiált.</translation>
+ <translation>%1 kvalifikált név prefixuma nincs definiálva.</translation>
</message>
<message>
<location line="+65"/>
<location line="+61"/>
<source>%1 attribute of %2 element must either contain %3 or the other values.</source>
- <translation>%2 elem %1 attribútumának vagy %3 vagy más értékeket kell tartalmaznia.</translation>
+ <translation>%2 elem %1 attribútumának vagy %3-t vagy a többi értéket kell tartalmaznia.</translation>
</message>
<message>
<location line="+131"/>
<source>Component with ID %1 has been defined previously.</source>
- <translation>%1 azonosítóval rendelkezővel komponens előzőleg definiálva lett.</translation>
+ <translation>%1 ID-jű komponens már lett definiálva korábban.</translation>
</message>
<message>
<location line="+17"/>
@@ -10006,329 +12955,483 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+23"/>
<source>Attribute group %1 already defined.</source>
- <translation>%1 csoport attribútum már definiálva van.</translation>
+ <translation>%1 attribútum csoport már definiálva van.</translation>
</message>
<message>
<location line="+11"/>
<source>Element group %1 already defined.</source>
- <translation>%1 csoport elem már definiálva van.</translation>
+ <translation>%1 elemcsoport már definiálva van.</translation>
</message>
<message>
<location line="+11"/>
<source>Notation %1 already defined.</source>
- <translation>%1 értesítés már definiálva van.</translation>
+ <translation>%1 jelölés már definiálva van.</translation>
</message>
<message>
<location line="+11"/>
<source>Identity constraint %1 already defined.</source>
- <translation>%1 azonosító korlátozó már definiálva van.</translation>
+ <translation>%1 identitás megkötés már definiálva van.</translation>
</message>
<message>
<location line="+11"/>
<source>Duplicated facets in simple type %1.</source>
- <translation>Duplikált oldalak %1 egyszerű típusban.</translation>
+ <translation>Duplikált facet-ek %1 egyszerű típusban.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdschemaresolver.cpp" line="+354"/>
+ <source>%1 references unknown %2 or %3 element %4.</source>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation>%1 érvénytelen %2 vagy %3 %4 elemre hivatkozik.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>%1 references identity constraint %2 that is no %3 or %4 element.</source>
+ <translation>%1 %2 identitás megkötésre hivatkozik, ami nem %3 vagy %4 elem.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>%1 has a different number of fields from the identity constraint %2 that it references.</source>
+ <translation>%1 eltérő számú mezőt tartalmaz, mint az általa hivatkozott %2 identitás megkötés.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Base type %1 of %2 element cannot be resolved.</source>
+ <translation>%2 elem %1 őstípusa nem feloldható.</translation>
+ </message>
+ <message>
+ <location line="+84"/>
+ <source>Item type %1 of %2 element cannot be resolved.</source>
+ <translation>%2 elem %1 elemtípusa nem feloldható.</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Member type %1 of %2 element cannot be resolved.</source>
+ <translation>%2 elem %1 tagtípusa nem feloldható.</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <location line="+415"/>
+ <location line="+30"/>
+ <source>Type %1 of %2 element cannot be resolved.</source>
+ <translation>%2 elem %1 típusa nem oldható fel.</translation>
+ </message>
+ <message>
+ <location line="-423"/>
+ <source>Base type %1 of complex type cannot be resolved.</source>
+ <translation>Komplex típus %1 őstípusa nem oldható fel.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1 cannot have complex base type that has a %2.</source>
+ <translation>%1-nek nem lehet %2-t tartalmazó komplex őstípusa.</translation>
+ </message>
+ <message>
+ <location line="+286"/>
+ <source>Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.</source>
+ <translation>%1 komplex típus tartalom modellje %2 elemet tartalmaz, ezáltal kiterjesztéssel nem származtatható nem üres típusból.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Complex type %1 cannot be derived by extension from %2 as the latter contains %3 element in its content model.</source>
+ <translation>%1 komplex típus nem származhat kiterjesztéssel %2-ból, mivel utóbbi %3 elemet tartalmaz a tartalom modelljében.</translation>
+ </message>
+ <message>
+ <location line="+101"/>
+ <source>Type of %1 element must be a simple type, %2 is not.</source>
+ <translation>%1 elem típusának egyszerű típusnak kell lennie, %2 nem az.</translation>
+ </message>
+ <message>
+ <location line="+62"/>
+ <source>Substitution group %1 of %2 element cannot be resolved.</source>
+ <translation>%2 elem %1 részcsoportja nem oldható fel.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Substitution group %1 has circular definition.</source>
+ <translation>%1 részcsoport körkörös definíciót tartalmaz.</translation>
+ </message>
+ <message>
+ <location line="+120"/>
+ <location line="+7"/>
+ <source>Duplicated element names %1 in %2 element.</source>
+ <translation>Duplikált %1 elemnevek a(z) %2 elemben.</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <location line="+52"/>
+ <location line="+71"/>
+ <location line="+28"/>
+ <source>Reference %1 of %2 element cannot be resolved.</source>
+ <translation>%2 elem %1 referenciája nem oldható fel.</translation>
+ </message>
+ <message>
+ <location line="-138"/>
+ <source>Circular group reference for %1.</source>
+ <translation>Körkörös csoport referencia %1-nél.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>%1 element is not allowed in this scope</source>
+ <translation>%1 elem nem megengedett ebben a hatókörben</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 element cannot have %2 attribute with value other than %3.</source>
+ <translation>%1 elem %2 attribútumának nem lehet más értéke, mint %3.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>%1 element cannot have %2 attribute with value other than %3 or %4.</source>
+ <translation>%1 elem %2 attribútumának nem lehet más értéke, mint %3 vagy %4.</translation>
+ </message>
+ <message>
+ <location line="+91"/>
+ <source>%1 or %2 attribute of reference %3 does not match with the attribute declaration %4.</source>
+ <translation>%3 referencia %1 vagy %2 attribútuma nem egyezik %4 attribútum deklarációval.</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Attribute group %1 has circular reference.</source>
+ <translation>%1 attribútum csoport körkörös referenciát tartalmaz.</translation>
+ </message>
+ <message>
+ <location line="+131"/>
+ <source>%1 attribute in %2 must have %3 use like in base type %4.</source>
+ <translation>%2 %1 attribútuma %3 kell legyen, úgy, mint %4 őstípusban.</translation>
+ </message>
+ <message>
+ <location line="+52"/>
+ <source>Attribute wildcard of %1 is not a valid restriction of attribute wildcard of base type %2.</source>
+ <translation>%1 attribútum helyettesítője nem érvényes megkötése %2 őstípus helyettesítőjének.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1 has attribute wildcard but its base type %2 has not.</source>
+ <translation>%1-nak van attribútum helyettesítője, de %2 őstípusnak nincs.</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Union of attribute wildcard of type %1 and attribute wildcard of its base type %2 is not expressible.</source>
+ <translation>%1 típus attribútum helyettesítőjének és %2 őstípusa helyettesítőjének uniója nem kiefjezhető.</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Enumeration facet contains invalid content: {%1} is not a value of type %2.</source>
+ <translation>Érvénytelen tartalom felsorolás facet-ben: {%1} érvénytelen érték %2 típusban.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Namespace prefix of qualified name %1 is not defined.</source>
+ <translation>%1 névtér prefixum vagy kvalifikált név nincs definiálva.</translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <location line="+18"/>
+ <source>%1 element %2 is not a valid restriction of the %3 element it redefines: %4.</source>
+ <translation>%1 elem érvénytelen %2 megkötése az általa felüldefiniált %3 elemre: %4.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/schema/qxsdtypechecker.cpp" line="+233"/>
<location line="+7"/>
<location line="+21"/>
<source>%1 is not valid according to %2.</source>
- <translation>%1 nem érvényes %2 szerint.</translation>
+ <translation>%2 alapján %1 érvénytelen.</translation>
</message>
<message>
<location line="+167"/>
<source>String content does not match the length facet.</source>
- <translation>Sztring tartalom nem egyezik a hossz oldallal.</translation>
+ <translation>A karakterlánc tartalom nem felel meg a hossz facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>String content does not match the minLength facet.</source>
- <translation>Sztring tartalom nem egyezik a minimális hosszúságú felülettel.</translation>
+ <translation>A karakterlánc tartalom nem felel meg a minLength facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>String content does not match the maxLength facet.</source>
- <translation>Sztring tartalom nem egyezik a maximális hosszúságú felülettel.</translation>
+ <translation>A karakterlánc tartalom nem felel meg a maxLength facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>String content does not match pattern facet.</source>
- <translation>Sztrng tartalom nem egyezik a minta felülettel.</translation>
+ <translation>A karakterlánc tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>String content is not listed in the enumeration facet.</source>
- <translation>Sztring tartalom nincs listázva a felsorol felületben.</translation>
+ <translation>A karakterlánc tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+17"/>
<source>Signed integer content does not match the maxInclusive facet.</source>
- <translation>Előjeles egész szám tartalom nem egyezik a maximális beleszámított felülettel.</translation>
+ <translation>Előjeles egész szám tartalom nem felel meg a maxInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Signed integer content does not match the maxExclusive facet.</source>
- <translation>Előjeles egész szám tartalom nem egyzik a maximális kizárólagos felülettel.</translation>
+ <translation>Előjeles egész szám tartalom nem felel meg a maxExclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Signed integer content does not match the minInclusive facet.</source>
- <translation>Előjeles egész szám tartalom nem egyezik a minimális beleértet felülettel.</translation>
+ <translation>Előjeles egész szám tartalom nem felel meg a minInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Signed integer content does not match the minExclusive facet.</source>
- <translation>Előjeles egész szám tartalom nem egyezik a minimális kizárólagos felülettel.</translation>
+ <translation>Előjeles egész szám tartalom nem felel meg a minExclusive facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Signed integer content is not listed in the enumeration facet.</source>
- <translation>Előjeles egész szám tartalom nincsen kilistázva a felsorolási felületben.</translation>
+ <translation>Előjeles egész szám tartalom nem felel meg a felsorolás facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Signed integer content does not match pattern facet.</source>
- <translation>Előjeles egész szám tartalom nem egyezik a minta felületben.</translation>
+ <translation>Előjeles egész szám tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+9"/>
<source>Signed integer content does not match in the totalDigits facet.</source>
- <translation>Előjeles egész szám tartalom nem egyezik a teljesSzámos felület.</translation>
+ <translation>Előjeles egész szám tartalom nem felel meg a totalDigits facet-nek.</translation>
</message>
<message>
<location line="+17"/>
<source>Unsigned integer content does not match the maxInclusive facet.</source>
- <translation>Nem előjeles egész szám tartalom nem egyezik a maximális beleértett felülettel.</translation>
+ <translation>Előjel nélküli egész szám tartalom nem felel meg a maxInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Unsigned integer content does not match the maxExclusive facet.</source>
- <translation>Nem előjeles egész szám tartalom nem egyezik a maximális kizárólagos felülettel.</translation>
+ <translation>Előjel nélküli egész szám tartalom nem felel meg a maxExclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Unsigned integer content does not match the minInclusive facet.</source>
- <translation>Nem előjeles tartalom nem egyezik a minimális beleértett felülettel.</translation>
+ <translation>Előjel nélküli egész szám tartalom nem felel meg a minInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Unsigned integer content does not match the minExclusive facet.</source>
- <translation>Nem előjeleg egész szám tartalom nem egyezik a beleértett minimális felülettel.</translation>
+ <translation>Előjel nélküli egész szám tartalom nem felel meg a minExclusive facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Unsigned integer content is not listed in the enumeration facet.</source>
- <translation>Nem előjeles egész szám tartalom nincsen kilistázva a felsorolási felületben.</translation>
+ <translation>Előjel nélküli egész szám tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+18"/>
<source>Unsigned integer content does not match pattern facet.</source>
- <translation>Nem előjeles egész szám tartalom nem egyezik a minta felületben.</translation>
+ <translation>Előjel nélküli egész szám tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+9"/>
<source>Unsigned integer content does not match in the totalDigits facet.</source>
- <translation>Nem előjeles egész szám tartalom nem egyezik a teljesSzámos felületben.</translation>
+ <translation>Előjel nélküli egész szám tartalom nem felel meg a totalDigits facet-nek.</translation>
</message>
<message>
<location line="+17"/>
<source>Double content does not match the maxInclusive facet.</source>
- <translation>Dupla tartalom nem egyezik a maximális beleértett felületben.</translation>
+ <translation>Dupla pontosságú szám tartalom nem felel meg a maxInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Double content does not match the maxExclusive facet.</source>
- <translation>Dupla tartalom nem egyezik a maximális kizárólagos felülettel.</translation>
+ <translation>Dupla pontosságú szám tartalom nem felel meg a maxExclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Double content does not match the minInclusive facet.</source>
- <translation>Dupla tartalom nem egyezik a minimális beleértett felülettel.</translation>
+ <translation>Dupla pontosságú szám tartalom nem felel meg a minInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Double content does not match the minExclusive facet.</source>
- <translation>Dupla tartalom nem egyezik a minimális kizárólag felülettel.</translation>
+ <translation>Dupla pontosságú szám tartalom nem felel meg a minExclusive facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Double content is not listed in the enumeration facet.</source>
- <translation>Dupla tartalom nincs listázva a felsorolási felületben.</translation>
+ <translation>Dupla pontosságú szám tartalom nem felel meg a felsorolás facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Double content does not match pattern facet.</source>
- <translation>Dupla tartalom nem egyezik a minta felületben.</translation>
+ <translation>Dupla pontosságú szám tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Decimal content does not match in the fractionDigits facet.</source>
- <translation>Tizedes tartalom nem egyezik a szám tényezős felületben.</translation>
+ <translation>Decimális tartalom nem felel meg a fractionDigits facet-nek.</translation>
</message>
<message>
<location line="+9"/>
<source>Decimal content does not match in the totalDigits facet.</source>
- <translation>Tizedes tartalom nem egyezik a teljesenSzámos felületben.</translation>
+ <translation>Decimális tartalom nem felel meg a totalDigits facet-nek.</translation>
</message>
<message>
<location line="+14"/>
<source>Date time content does not match the maxInclusive facet.</source>
- <translation>Dátum idő tartalom nem egyezik a maximális beleértett felülettel.</translation>
+ <translation>Dátum-idő tartalom nem felel meg a maxInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Date time content does not match the maxExclusive facet.</source>
- <translation>Dátum idő tartalom nem egyezik a maximális kizárólagos felülettel.</translation>
+ <translation>Dátum-idő tartalom nem felel meg a maxExclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Date time content does not match the minInclusive facet.</source>
- <translation>Dátum idő tartalom nem egyezik a minimális beleértett felülettel.</translation>
+ <translation>Dátum-idő tartalom nem felel meg a minInclusive facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Date time content does not match the minExclusive facet.</source>
- <translation>Dátum idő tartalom nem egyezik a minimális kizárólagos felülettel.</translation>
+ <translation>Dátum-idő tartalom nem felel meg a minExclusive facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Date time content is not listed in the enumeration facet.</source>
- <translation>Dátum idő tartalom nincsen kilistázva a felsorolási felületben.</translation>
+ <translation>Dátum-idő tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+18"/>
<source>Date time content does not match pattern facet.</source>
- <translation>Dátum idő tartalom nem egyezik a minta felületben.</translation>
+ <translation>Dátum-idő tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+15"/>
<source>Duration content does not match the maxInclusive facet.</source>
- <translation>Tartalom időtartam nem egyezik a maximális beleértett felülettel.</translation>
+ <translation>Időtartam tartalom nem felel meg a maxInclusive facet-nek.</translation>
</message>
<message>
<location line="+9"/>
<source>Duration content does not match the maxExclusive facet.</source>
- <translation>Tartalom időtartam nem egyezik a maximális kizárólagos felülettel.</translation>
+ <translation>Időtartam tartalom nem felel meg a maxExclusive facet-nek.</translation>
</message>
<message>
<location line="+9"/>
<source>Duration content does not match the minInclusive facet.</source>
- <translation>Tartalom időtartam nem egyezik a minimális benne foglalt felülettel.</translation>
+ <translation>Időtartam tartalom nem felel meg a minInclusive facet-nek.</translation>
</message>
<message>
<location line="+9"/>
<source>Duration content does not match the minExclusive facet.</source>
- <translation>Tartalom időtartam nem egyezik a minimális kizárólagos felülettel.</translation>
+ <translation>Időtartam tartalom nem felel meg a minExclusive facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Duration content is not listed in the enumeration facet.</source>
- <translation>Tartalom időtartam nincs listázva a felsorolási felületben.</translation>
+ <translation>Időtartam tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+18"/>
<source>Duration content does not match pattern facet.</source>
- <translation>Tartalom időtartam nem egyezik a felület mintában.</translation>
+ <translation>Időtartam tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+27"/>
<source>Boolean content does not match pattern facet.</source>
- <translation>Logikai tartalom nem egyezik a minta felületben.</translation>
+ <translation>Logikai tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+17"/>
<source>Binary content does not match the length facet.</source>
- <translation>Bináris tartalom nem egyezik a hossz felületben.</translation>
+ <translation>Bináris tartalom nem felel meg a hossz facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Binary content does not match the minLength facet.</source>
- <translation>Bináris tartalom nem egyezik a minimális hossz felületben.</translation>
+ <translation>Bináris tartalom nem felel meg a minLength facet-nek.</translation>
</message>
<message>
<location line="+8"/>
<source>Binary content does not match the maxLength facet.</source>
- <translation>Bináris tartalom nem egyezik a maximális hossz felületben.</translation>
+ <translation>Bináris tartalom nem felel meg a maxLength facet-nek.</translation>
</message>
<message>
<location line="+18"/>
<source>Binary content is not listed in the enumeration facet.</source>
- <translation>Bináris tartalom nincsen kilistázva a felsorolási felületben.</translation>
+ <translation>Bináris tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+27"/>
<source>Invalid QName content: %1.</source>
- <translation>Érvénytelen QName tartalom: %1.</translation>
+ <translation>Érvénytelen QName tartalom: %1.</translation>
</message>
<message>
<location line="+17"/>
<source>QName content is not listed in the enumeration facet.</source>
- <translation>QName tartalom nincsen kilistázva a felsorolási felületben.</translation>
+ <translation>QName tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+18"/>
<source>QName content does not match pattern facet.</source>
- <translation>QName tartalom nem egyezik a mintha felületben.</translation>
+ <translation>QName tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+36"/>
<source>Notation content is not listed in the enumeration facet.</source>
- <translation>Tartalom jelölés nincsen kilistázva a felsorolási felületben.</translation>
+ <translation>Jelölő tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+19"/>
<source>List content does not match length facet.</source>
- <translation>Tartalom lista nem egyezik a hossz felületben.</translation>
+ <translation>Lista tartalom nem felel meg a hossz facet-nek.</translation>
</message>
<message>
<location line="+7"/>
<source>List content does not match minLength facet.</source>
- <translation>Tartalmi lista nem egyezik a minimális hossz felületben.</translation>
+ <translation>Lista tartalom nem felel meg a minLength facet-nek.</translation>
</message>
<message>
<location line="+7"/>
<source>List content does not match maxLength facet.</source>
- <translation>Tartalmi list nem egyezik a maximális hossz felületen.</translation>
+ <translation>Lista tartalom nem felel meg a maxLength facet-nek.</translation>
</message>
<message>
<location line="+90"/>
<source>List content is not listed in the enumeration facet.</source>
- <translation>Tartalmi lista nincsen kilistázva a felsorolási felületen.</translation>
+ <translation>Lista tartalom nem szerepl a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+18"/>
<source>List content does not match pattern facet.</source>
- <translation>Tartalmi lista nem egyezik a minta felületen.</translation>
+ <translation>Lista tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+39"/>
<source>Union content is not listed in the enumeration facet.</source>
- <translation>Egység tartalom nincsen kilistázva a felsorolási felületen.</translation>
+ <translation>Union tartalom nem szerepel a felsorolás facet-ben.</translation>
</message>
<message>
<location line="+18"/>
<source>Union content does not match pattern facet.</source>
- <translation>Egység tartalom nem egyezik a minta felületen.</translation>
+ <translation>Union tartalom nem felel meg a minta facet-nek.</translation>
</message>
<message>
<location line="+15"/>
<source>Data of type %1 are not allowed to be empty.</source>
- <translation>%1 típus adata nem engedélyezett, hogy üres legyen.</translation>
+ <translation>%1 típusú adat nem lehet üres.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp" line="+160"/>
<source>Element %1 is missing child element.</source>
- <translation>%1 elem hiányzik a gyermek elemből.</translation>
+ <translation>Hiányzó gyermek elem %1 elemben.</translation>
</message>
<message>
<location line="+16"/>
<source>There is one IDREF value with no corresponding ID: %1.</source>
- <translation>Van egy IDREF érték nem megfelelő azonosítóval: %1.</translation>
+ <translation>Egy IDREF érték van hozzátartozó ID nélkül: %1.</translation>
</message>
<message>
<location line="+27"/>
<source>Loaded schema file is invalid.</source>
- <translation>Betöltött terv fájl nem létezik.</translation>
+ <translatorcomment>A betöltött sémafájl érvénytelen.</translatorcomment>
+ <translation></translation>
</message>
<message>
<location line="+16"/>
@@ -10338,128 +13441,128 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+13"/>
<source>xsi:schemaLocation namespace %1 has already appeared earlier in the instance document.</source>
- <translation>xsi:tervElhelyezkedés %1 névtér már előfordult korábban a példa dokumentumban.</translation>
+ <translation>%1 xsi:schemaLocation névtér már szerepelt korábban a példány dokumentumban.</translation>
</message>
<message>
<location line="+22"/>
<source>xsi:noNamespaceSchemaLocation cannot appear after the first no-namespace element or attribute.</source>
- <translation>xsi:tervElhelyezkedés névtér nem fordulhat elő az első nem névtér elem vagy attribútum után.</translation>
+ <translation>xsi:noNamespaceSchemaLocation nem szerepelhet az első nem-névtérbeli elem vagy attribútum után.</translation>
</message>
<message>
<location line="+18"/>
<source>No schema defined for validation.</source>
- <translation>Nincsen terv definiálva jóváhagyásra.</translation>
+ <translation>Nincs megadva séma a validáláshoz.</translation>
</message>
<message>
<location line="+10"/>
<source>No definition for element %1 available.</source>
- <translation>Nincsen elérhető definíció a(z) %1 elemre.</translation>
+ <translation>%1 elem definíciója nem érhető el.</translation>
</message>
<message>
<location line="+18"/>
<location line="+49"/>
<location line="+142"/>
<source>Specified type %1 is not known to the schema.</source>
- <translation>%1 meghatározott típus ismeretlen a terv számára.</translation>
+ <translation>A megadott %1 típus ismeretlen a séma számára.</translation>
</message>
<message>
<location line="-176"/>
<source>Element %1 is not defined in this scope.</source>
- <translation>%1 elem nincs definiálva ebben a hatókörben.</translation>
+ <translation>%1 elem nem ebben a hatókörben lett definiálva.</translation>
</message>
<message>
<location line="+43"/>
<source>Declaration for element %1 does not exist.</source>
- <translation>%1 elem deklaráció nem létezik.</translation>
+ <translation>%1 elem deklarációja nem létezik.</translation>
</message>
<message>
<location line="+12"/>
<source>Element %1 contains invalid content.</source>
- <translation>%1 elem érvénytelen tartalmat tartalmaz.</translation>
+ <translation>%1 elemben érvénytelen tartalom van.</translation>
</message>
<message>
<location line="+73"/>
<source>Element %1 is declared as abstract.</source>
- <translation>%1 elem elvontkét lett deklarálva.</translation>
+ <translation>%1 elem absztraktként lett definiálva.</translation>
</message>
<message>
<location line="+7"/>
<source>Element %1 is not nillable.</source>
- <translation>%1 elem nem nullázható.</translation>
+ <translation>%1 elem nem nil-feltételű.</translation>
</message>
<message>
<location line="+8"/>
<source>Attribute %1 contains invalid data: %2</source>
- <translation>%1 attribútum érvénytelen adatokat tartalmaz: %2</translation>
+ <translation>%1 attribútum érvénytelen adatot tartalmaz: %2</translation>
</message>
<message>
<location line="+8"/>
<source>Element contains content although it is nillable.</source>
- <translation>Elem nem nullázható elemeket tartalmaz.</translation>
+ <translation>Az elem annak ellenére tartalmaz adatot, hogy nil-feltételű.</translation>
</message>
<message>
<location line="+6"/>
<source>Fixed value constraint not allowed if element is nillable.</source>
- <translation>Fix érték korlátozó nem engedélyezett, ha az elem nullázható.</translation>
- </message>
- <message>
- <location line="+230"/>
- <source>Element %1 cannot contain other elements, as it has a fixed content.</source>
- <translation>%1 nem tartalmazhat másik elemeket, mint ennek is egy fix mérete van.</translation>
+ <translation>Az elemre rögzített érték megkötés nem adható, ha az nil-feltételű.</translation>
</message>
<message>
- <location line="-198"/>
+ <location line="+32"/>
<source>Specified type %1 is not validly substitutable with element type %2.</source>
- <translation>%1 meghatározott típus nem helyettesíthető érvényesen %2 elem típussal.</translation>
+ <translation>A megadott %1 típus nem helyettesíthető érvényesen %2 elemtípussal.</translation>
</message>
<message>
<location line="+23"/>
<source>Complex type %1 is not allowed to be abstract.</source>
- <translation>%1 komplex típus nem engedélyezett, hogy elvont legyen.</translation>
+ <translation>%1 komplex típus nem lehet absztrakt.</translation>
</message>
<message>
<location line="+21"/>
<source>Element %1 contains not allowed attributes.</source>
- <translation>%1 nem engedélyezett attribútumokat tartalmaz.</translation>
+ <translation>%1 elem nem megengedett attribútumokat tartalmaz.</translation>
</message>
<message>
<location line="+6"/>
<location line="+97"/>
<source>Element %1 contains not allowed child element.</source>
- <translation>%1 nem engedélyezett gyermek attribútumokat tartalmaz.</translation>
+ <translation>%1 elem nem megengedett gyermek elemet tartalmaz.</translation>
</message>
<message>
<location line="-76"/>
<location line="+93"/>
<source>Content of element %1 does not match its type definition: %2.</source>
- <translation>%1 elem tartalma nem egyezik meg a típus definíciójával: %2.</translation>
+ <translation>%1 elem tartalma nem egyezik típusának definíciójával: %2.</translation>
</message>
<message>
<location line="-85"/>
<location line="+92"/>
<location line="+41"/>
<source>Content of element %1 does not match defined value constraint.</source>
- <translation>%1 elem tartalma nem egyezik meg a definiált érték korlátozóval.</translation>
+ <translation>%1 elem tartalma nem egyezik a definiált érték megkötéssel.</translation>
</message>
<message>
<location line="-73"/>
<source>Element %1 contains not allowed child content.</source>
- <translation>%1 nem engedélyezett gyermek tartalmat tartalmaz.</translation>
+ <translation>%1 elem nem megengedett gyermek tartalmat tartalmaz.</translation>
</message>
<message>
<location line="+41"/>
<source>Element %1 contains not allowed text content.</source>
- <translation>%1 nem engedélyezett szöveg tartalmat tartalmaz.</translation>
+ <translation>%1 elemben nem megengedett szövegtartalom található.</translation>
</message>
<message>
- <location line="+61"/>
+ <location line="+18"/>
+ <source>Element %1 cannot contain other elements, as it has a fixed content.</source>
+ <translation>%1 elem nem tartalmazhat más elemeket, mert tartalma rögzített.</translation>
+ </message>
+ <message>
+ <location line="+43"/>
<source>Element %1 is missing required attribute %2.</source>
- <translation>%1 hiányzik, %2 attribútum igényli.</translation>
+ <translation>%1 elemből hiányzik a kötelező %2 attribútum.</translation>
</message>
<message>
<location line="+29"/>
<source>Attribute %1 does not match the attribute wildcard.</source>
- <translation>%1 attribűtum nem egyezik meg az attribútum helyettesítő jellel.</translation>
+ <translation>%1 attribútum nem egyezik az attribútum helyettesítővel.</translation>
</message>
<message>
<location line="+9"/>
@@ -10469,69 +13572,190 @@ Kérem válasszon egy különböző fájl nevet.</translation>
<message>
<location line="+6"/>
<source>Element %1 contains two attributes of type %2.</source>
- <translation>%1 elem %2 típus két attribútumát tartalmazza.</translation>
+ <translation>%1 elem két %2 típusú attribútumot tartalmaz.</translation>
</message>
<message>
<location line="+11"/>
<source>Attribute %1 contains invalid content.</source>
- <translation>%1 attribútum érvénytelen tartalmaz tartalmaz.</translation>
+ <translation>%1 attribútumban érvénytelen tartalom szerepel.</translation>
</message>
<message>
<location line="+7"/>
<source>Element %1 contains unknown attribute %2.</source>
- <translation>%1 elem ismeretlen %2 attribútumokat tartalmaz.</translation>
+ <translation>%1 elem a(z) %2 ismeretlen attribútumot tartalmazza.</translation>
</message>
<message>
<location line="+40"/>
<location line="+46"/>
<source>Content of attribute %1 does not match its type definition: %2.</source>
- <translation>%1 attribútum tartalma nem egyezik a típus definíciójával: %2.</translation>
+ <translation>%1 attribútum tartalma nem egyezik a típus definícióban megadottakkal: %2.</translation>
</message>
<message>
<location line="-38"/>
<location line="+46"/>
<source>Content of attribute %1 does not match defined value constraint.</source>
- <translation>%1 attribútum tartalma nem egyezik meg a definiált érték korlátozóval.</translation>
+ <translation>%1 attribútum tartalma nem egyezik a definiált érték megkötéssel.</translation>
</message>
<message>
<location line="+88"/>
<source>Non-unique value found for constraint %1.</source>
- <translation>Nem található egyedülálló érték a(z) %1 módosítóra.</translation>
+ <translation>%1 megkötés nem egyedi értéket tartalmaz.</translation>
</message>
<message>
<location line="+20"/>
<source>Key constraint %1 contains absent fields.</source>
- <translation>%1 kulcs korlátozó hiányzó mezőket tartalmaz.</translation>
+ <translation>%1 kulcs megkötés hiányzó mezőket tartalmaz.</translation>
</message>
<message>
<location line="+18"/>
<source>Key constraint %1 contains references nillable element %2.</source>
- <translation>%1 kulcs korlátozó hivatkozásokat nem tartalmaz nullázható %2 elemekre.</translation>
+ <translation>%1 kulcsfeltétel %2 nil-feltételű elemre vonatkozó hivatkozást tartalmaz.</translation>
</message>
<message>
<location line="+40"/>
<source>No referenced value found for key reference %1.</source>
- <translation>Nem található referencia érték a(z) %1 kulcs referenciára.</translation>
+ <translation>Nem található hivatkozott érték %1 kulcs referenciához.</translation>
</message>
<message>
<location line="+64"/>
<source>More than one value found for field %1.</source>
- <translation>Több mint egy érték található a(z) %1-es mezőre.</translation>
+ <translation>%1 mezőhöz egynél több érték létezik.</translation>
</message>
<message>
<location line="+20"/>
<source>Field %1 has no simple type.</source>
- <translation>%1 mezőnek nincsen egyszerű típusa.</translation>
+ <translation>%1 mezőnek nincs egyszerű típusa.</translation>
</message>
<message>
<location line="+73"/>
<source>ID value &apos;%1&apos; is not unique.</source>
- <translation>%1 azonosító érték nem egyedülálló.</translation>
+ <translation>&apos;%1&apos; ID érték nem egyedi.</translation>
</message>
<message>
<location line="+11"/>
<source>&apos;%1&apos; attribute contains invalid QName content: %2.</source>
- <translation>%1 attribútum érvénytelen QName tartalmaz tartalmaz: %2.</translation>
+ <translation>&apos;%1% attribútum érvénytelen QName adatot tartalmaz: %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
+ <source>empty</source>
+ <translation>üres</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>zero or one</source>
+ <translation>nulla vagy egy</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>exactly one</source>
+ <translation>pontosan egy</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>one or more</source>
+ <translation>egy vagy több</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>zero or more</source>
+ <translation>nulla vagy több</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
+ <source>Required type is %1, but %2 was found.</source>
+ <translation>Az elvárt típus %1, de a kapott %2.</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Promoting %1 to %2 may cause loss of precision.</source>
+ <translation>%1 átalakítása %2 típusra a pontosság elvesztését okozhatja.</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>The focus is undefined.</source>
+ <translation>A fókusz nincs definiálva.</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>Semmilyen más csomópont után nem adható meg attribútum.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>An attribute by name %1 has already been created.</source>
+ <translation>%1 nevű attribútum már létre van hozva.</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>Csak a Unicode Codepoint Collation támogatott(%1). %2 nem támogatott.</translation>
+ </message>
+</context>
+<context>
+ <name>VolumeSlider</name>
+ <message>
+ <source>Muted</source>
+ <translation type="obsolete">Elnémítva</translation>
+ </message>
+ <message>
+ <source>Volume: %1%</source>
+ <translation type="obsolete">Hangerő: %1%</translation>
+ </message>
+</context>
+<context>
+ <name>WebCore::PlatformScrollbar</name>
+ <message>
+ <source>Scroll here</source>
+ <translation type="obsolete">Görgetés ide</translation>
+ </message>
+ <message>
+ <source>Left edge</source>
+ <translation type="obsolete">Bal szélre</translation>
+ </message>
+ <message>
+ <source>Top</source>
+ <translation type="obsolete">Felülre</translation>
+ </message>
+ <message>
+ <source>Right edge</source>
+ <translation type="obsolete">Jobb szélre</translation>
+ </message>
+ <message>
+ <source>Bottom</source>
+ <translation type="obsolete">Alulra</translation>
+ </message>
+ <message>
+ <source>Page left</source>
+ <translation type="obsolete">Egy oldalt balra</translation>
+ </message>
+ <message>
+ <source>Page up</source>
+ <translation type="obsolete">Egy oldalt felfelé</translation>
+ </message>
+ <message>
+ <source>Page right</source>
+ <translation type="obsolete">Egy oldalt jobbra</translation>
+ </message>
+ <message>
+ <source>Page down</source>
+ <translation type="obsolete">Egy oldalt lefelé</translation>
+ </message>
+ <message>
+ <source>Scroll left</source>
+ <translation type="obsolete">Görgetés balra</translation>
+ </message>
+ <message>
+ <source>Scroll up</source>
+ <translation type="obsolete">Görgetés felfelé</translation>
+ </message>
+ <message>
+ <source>Scroll right</source>
+ <translation type="obsolete">Görgetés jobbra</translation>
+ </message>
+ <message>
+ <source>Scroll down</source>
+ <translation type="obsolete">Görgetés lefelé</translation>
</message>
</context>
</TS>
diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts
index e9cdfd4..deae134 100644
--- a/translations/qt_ru.ts
+++ b/translations/qt_ru.ts
@@ -1,10 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU">
+<TS version="2.0" language="ru">
+<context>
+ <name>CloseButton</name>
+ <message>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2313"/>
+ <source>Close Tab</source>
+ <translation>Закрыть вкладку</translation>
+ </message>
+</context>
+<context>
+ <name>FakeReply</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2273"/>
+ <source>Fake error !</source>
+ <translation>Фиктивная ошибка !</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid URL</source>
+ <translation>Некорректный адрес URL</translation>
+ </message>
+</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2316"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2335"/>
<source>Services</source>
<translation>Службы</translation>
</message>
@@ -40,27 +61,6 @@
</message>
</context>
<context>
- <name>CloseButton</name>
- <message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2264"/>
- <source>Close Tab</source>
- <translation>Закрыть вкладку</translation>
- </message>
-</context>
-<context>
- <name>FakeReply</name>
- <message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2200"/>
- <source>Fake error !</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Invalid URL</source>
- <translation>Некорректный URL</translation>
- </message>
-</context>
-<context>
<name>Phonon::</name>
<message>
<location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+55"/>
@@ -96,25 +96,32 @@
<context>
<name>Phonon::AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+385"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+444"/>
+ <location line="+34"/>
<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"/>
+ <location line="-21"/>
<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;br/&gt;, которое доступно и имеет высший приоритет.&lt;/html&gt;</translation>
+ <translation>&lt;html&gt;Переключение на звуковое устройство &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;, которое стало доступно и имеет высший приоритет.&lt;/html&gt;</translation>
</message>
<message>
<location line="+3"/>
+ <location line="+14"/>
<source>Revert back to device &apos;%1&apos;</source>
- <translation>Возвращение к устройству &apos;%1&apos;</translation>
+ <translation>Возвращение к устройству &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which has higher preference or is specifically configured for this stream.&lt;/html&gt;</source>
+ <translation>&lt;html&gt;Переключение на устройство вывода звука &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;, которое имеет высший приоритет или настроено для обработки данного потока.&lt;/html&gt;</translation>
</message>
</context>
<context>
<name>Phonon::Gstreamer::Backend</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+182"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+188"/>
<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 не установлен.
@@ -131,40 +138,50 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+93"/>
<source>Cannot start playback.
Check your GStreamer installation and make sure you
have libgstreamer-plugins-base installed.</source>
<translation>Невозможно начать воспроизведение.
-Проверьте установку GStreamer и убедитесь,
+Проверьте правильность установки GStreamer и убедитесь,
что пакет libgstreamer-plugins-base установлен.</translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+129"/>
+ <source>Missing codec helper script assistant.</source>
+ <translation>Отсутствует сценарий установки кодека.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Plugin codec installation failed for codec: %0</source>
+ <translation>Не удалось установить модуль кодека: %0</translation>
+ </message>
+ <message>
+ <location line="+11"/>
<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="+702"/>
- <location line="+8"/>
- <location line="+15"/>
- <location line="+26"/>
+ <location line="+730"/>
<location line="+6"/>
- <location line="+19"/>
- <location line="+339"/>
+ <location line="+13"/>
+ <location line="+24"/>
+ <location line="+6"/>
+ <location line="+18"/>
+ <location line="+434"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation>Не удалось открыть источник медиа-данных.</translation>
</message>
<message>
- <location line="-424"/>
+ <location line="-514"/>
<source>Invalid source type.</source>
- <translation>Неверный тип источника медиа-данных.</translation>
+ <translation>Некорректный тип источника медиа-данных.</translation>
</message>
<message>
- <location line="+398"/>
+ <location line="+488"/>
<source>Could not locate media source.</source>
<translation>Не удалось найти источник медиа-данных.</translation>
</message>
@@ -192,14 +209,14 @@ have libgstreamer-plugins-base installed.</source>
<translation>Устройство воспроизведения звука</translation>
</message>
<message>
- <location filename="../src/3rdparty/phonon/mmf/utils.cpp" line="+87"/>
+ <location filename="../src/3rdparty/phonon/mmf/utils.cpp" line="+89"/>
<source>No error</source>
<translation>Нет ошибки</translation>
</message>
<message>
<location line="+2"/>
<source>Not found</source>
- <translation>Не найден</translation>
+ <translation>Не найдено</translation>
</message>
<message>
<location line="+2"/>
@@ -214,12 +231,12 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+2"/>
<source>Overflow</source>
- <translation type="unfinished"></translation>
+ <translation>Переполнение</translation>
</message>
<message>
<location line="+2"/>
<source>Underflow</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Переполнение</translation>
</message>
<message>
<location line="+2"/>
@@ -239,7 +256,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+2"/>
<source>Not ready</source>
- <translation>Не готов</translation>
+ <translation>Не готово</translation>
</message>
<message>
<location line="+2"/>
@@ -264,7 +281,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+4"/>
<source>Insufficient bandwidth</source>
- <translation type="unfinished">Недостаточная ширина канала</translation>
+ <translation>Недостаточная скорость передачи данных</translation>
</message>
<message>
<location line="+3"/>
@@ -274,17 +291,17 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+4"/>
<source>Network communication error</source>
- <translation type="unfinished">Ошибка сетевого обмена данными</translation>
+ <translation>Ошибка сетевого обмена данными</translation>
</message>
<message>
<location line="+2"/>
<source>Streaming not supported</source>
- <translation type="unfinished"></translation>
+ <translation>Потоковое воспроизведение не поддерживается</translation>
</message>
<message>
<location line="+2"/>
<source>Server alert</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Сигнал сервера</translation>
</message>
<message>
<location line="+2"/>
@@ -294,12 +311,12 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+2"/>
<source>Invalid URL</source>
- <translation>Некорректный URL</translation>
+ <translation>Некорректный адрес URL</translation>
</message>
<message>
<location line="+2"/>
<source>Multicast error</source>
- <translation type="unfinished"></translation>
+ <translation>Ошибка широковещательной передачи</translation>
</message>
<message>
<location line="+3"/>
@@ -358,7 +375,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+4"/>
<source>Error opening URL</source>
- <translation>Ошибка открытия URL</translation>
+ <translation>Ошибка открытия адреса URL</translation>
</message>
<message>
<location line="+83"/>
@@ -366,12 +383,40 @@ have libgstreamer-plugins-base installed.</source>
<translation>Не удалось установить уровень громкости</translation>
</message>
<message>
- <location line="+50"/>
+ <location line="+45"/>
+ <source>Loading clip failed</source>
+ <translation>Не удалось загрузить клип</translation>
+ </message>
+ <message>
+ <location line="+24"/>
<source>Playback complete</source>
<translation>Воспроизведение завершено</translation>
</message>
</context>
<context>
+ <name>Phonon::MMF::AbstractVideoPlayer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/abstractvideoplayer.cpp" line="+108"/>
+ <source>Pause failed</source>
+ <translation>Не удалось приостановить воспроизведение</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Seek failed</source>
+ <translation>Не удалось установить позицию</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Getting position failed</source>
+ <translation>Не удалось получить позицию</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Opening clip failed</source>
+ <translation>Не удалось открыть клип</translation>
+ </message>
+</context>
+<context>
<name>Phonon::MMF::AudioEqualizer</name>
<message>
<location filename="../src/3rdparty/phonon/mmf/audioequalizer.cpp" line="+92"/>
@@ -384,12 +429,19 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location filename="../src/3rdparty/phonon/mmf/audioplayer.cpp" line="+173"/>
<source>Getting position failed</source>
- <translation type="unfinished"></translation>
+ <translation>Не удалось получить позицию</translation>
</message>
+</context>
+<context>
+ <name>Phonon::MMF::DsaVideoPlayer</name>
<message>
- <location line="+36"/>
- <source>Opening clip failed</source>
- <translation type="unfinished"></translation>
+ <location filename="../src/3rdparty/phonon/mmf/videoplayer_dsa.cpp" line="+238"/>
+ <location line="+15"/>
+ <location line="+8"/>
+ <location line="+22"/>
+ <location line="+22"/>
+ <source>Video display error</source>
+ <translation>Ошибка отображения видео</translation>
</message>
</context>
<context>
@@ -397,7 +449,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location filename="../src/3rdparty/phonon/mmf/effectfactory.cpp" line="+181"/>
<source>Enabled</source>
- <translation type="unfinished">Активно</translation>
+ <translation>Включено</translation>
</message>
</context>
<context>
@@ -406,74 +458,74 @@ have libgstreamer-plugins-base installed.</source>
<location filename="../src/3rdparty/phonon/mmf/environmentalreverb.cpp" line="+146"/>
<source>Decay HF ratio (%)</source>
<extracomment>DecayHFRatio: Ratio of high-frequency decay time to the value specified by DecayTime.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Коэффициент затухания ВЧ (%)</translation>
</message>
<message>
<location line="+6"/>
<source>Decay time (ms)</source>
<extracomment>DecayTime: Time over which reverberation is diminished.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Время затухания (мс)</translation>
</message>
<message>
<location line="+7"/>
<source>Density (%)</source>
<extracomment>Density Delay between first and subsequent reflections. Note that the S60 platform documentation does not make clear the distinction between this value and the Diffusion value.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Плотность (%)</translation>
</message>
<message>
<location line="+6"/>
<source>Diffusion (%)</source>
<extracomment>Diffusion: Delay between first and subsequent reflections. Note that the S60 platform documentation does not make clear the distinction between this value and the Density value.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Рассеивание (%)</translation>
</message>
<message>
<location line="+5"/>
<source>Reflections delay (ms)</source>
<extracomment>ReflectionsDelay: Amount of delay between the arrival the direct path from the source and the arrival of the first reflection.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Затухание отражений (мс)</translation>
</message>
<message>
<location line="+7"/>
<source>Reflections level (mB)</source>
<extracomment>ReflectionsLevel: Amplitude of reflections. This value is corrected by the RoomLevel to give the final reflection amplitude.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Уровень отражений (мБар)</translation>
</message>
<message>
<location line="+7"/>
<source>Reverb delay (ms)</source>
<extracomment>ReverbDelay: Amount of time between arrival of the first reflection and start of the late reverberation.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Задержка эха (мс)</translation>
</message>
<message>
<location line="+8"/>
<source>Reverb level (mB)</source>
<extracomment>ReverbLevel Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Уровень эха (мБар)</translation>
</message>
<message>
<location line="+7"/>
<source>Room HF level</source>
<extracomment>RoomHFLevel: Amplitude of low-pass filter used to attenuate the high frequency component of reflected sound.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Уровень ВЧ отражений</translation>
</message>
<message>
<location line="+6"/>
<source>Room level (mB)</source>
<extracomment>RoomLevel: Master volume control for all reflected sound.</extracomment>
- <translation type="unfinished"></translation>
+ <translation>Уровень отражений (мБар)</translation>
</message>
</context>
<context>
<name>Phonon::MMF::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/mmf/mediaobject.cpp" line="+270"/>
+ <location filename="../src/3rdparty/phonon/mmf/mediaobject.cpp" line="+276"/>
<source>Error opening source: type not supported</source>
<translation>Ошибка открытыия источника: тип не поддерживается</translation>
</message>
<message>
<location line="+18"/>
<source>Error opening source: media type could not be determined</source>
- <translation>Ошибка открытыия источника: тип медиа-данных не определён</translation>
+ <translation>Ошибка открытыия источника: тип носителя не определён</translation>
</message>
</context>
<context>
@@ -485,40 +537,12 @@ have libgstreamer-plugins-base installed.</source>
</message>
</context>
<context>
- <name>Phonon::MMF::VideoPlayer</name>
- <message>
- <location filename="../src/3rdparty/phonon/mmf/mmf_videoplayer.cpp" line="+125"/>
- <source>Pause failed</source>
- <translation type="unfinished"></translation>
- </message>
+ <name>Phonon::MMF::SurfaceVideoPlayer</name>
<message>
+ <location filename="../src/3rdparty/phonon/mmf/videoplayer_surface.cpp" line="+126"/>
<location line="+16"/>
- <source>Seek failed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+54"/>
- <source>Getting position failed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+26"/>
- <source>Opening clip failed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+26"/>
- <source>Buffering clip failed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+174"/>
- <location line="+12"/>
- <location line="+176"/>
- <location line="+15"/>
- <location line="+6"/>
<source>Video display error</source>
- <translation type="unfinished"></translation>
+ <translation>Ошибка отображения видео</translation>
</message>
</context>
<context>
@@ -536,7 +560,7 @@ have libgstreamer-plugins-base installed.</source>
<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>
+ <translation>Используйте данный регулятор для настройки громкости. Крайнее левое положение соответствует 0%, крайнее правое - %1%</translation>
</message>
<message>
<location line="+67"/>
@@ -549,7 +573,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
- <translation type="unfinished">%1, %2 не определён</translation>
+ <translation>%1, %2 не определён</translation>
</message>
<message>
<location line="+36"/>
@@ -1149,43 +1173,43 @@ to
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
- <translation>Протокол &apos;%1&apos; не поддерживается</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживается</translation>
</message>
<message>
<location line="-260"/>
<source>The protocol `%1&apos; does not support listing directories</source>
- <translation>Протокол &apos;%1&apos; не поддерживает просмотр каталогов</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживает просмотр каталогов</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support creating new directories</source>
- <translation>Протокол &apos;%1&apos; не поддерживает создание каталогов</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживает создание каталогов</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support removing files or directories</source>
- <translation>Протокол &apos;%1&apos; не поддерживает удаление файлов или каталогов</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживает удаление файлов или каталогов</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support renaming files or directories</source>
- <translation>Протокол &apos;%1&apos; не поддерживает переименование файлов или каталогов</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживает переименование файлов или каталогов</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support getting files</source>
- <translation>Протокол &apos;%1&apos; не поддерживает доставку файлов</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживает доставку файлов</translation>
</message>
<message>
<location line="+3"/>
<source>The protocol `%1&apos; does not support putting files</source>
- <translation>Протокол &apos;%1&apos; не поддерживает отправку файлов</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживает отправку файлов</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>Протокол &apos;%1&apos; не поддерживает копирование или перемещение файлов или каталогов</translation>
+ <translation>Протокол &quot;%1&quot; не поддерживает копирование или перемещение файлов или каталогов</translation>
</message>
<message>
<location line="+237"/>
@@ -1225,7 +1249,7 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+906"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+916"/>
<location filename="../src/network/socket/qhttpsocketengine.cpp" line="+629"/>
<location filename="../src/network/socket/qsocks5socketengine.cpp" line="+661"/>
<location line="+26"/>
@@ -1247,12 +1271,12 @@ to
<message>
<location line="-559"/>
<location line="+809"/>
- <location line="+208"/>
+ <location line="+220"/>
<source>Operation on socket is not supported</source>
<translation>Операция с сокетом не поддерживается</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+598"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+625"/>
<location filename="../src/network/socket/qabstractsocket.cpp" line="+203"/>
<source>Socket operation timed out</source>
<translation>Время на операцию с сокетом истекло</translation>
@@ -1271,7 +1295,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1260"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1263"/>
<source>&amp;Step up</source>
<translation>Шаг вв&amp;ерх</translation>
</message>
@@ -1297,14 +1321,9 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
- <source>Activate</source>
- <translation>Активировать</translation>
- </message>
- <message>
<location filename="../src/gui/dialogs/qmessagebox.h" line="+354"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
- <translation>Программный модуль &apos;%1&apos; требует Qt %2, найдена версия %3.</translation>
+ <translation>Программный модуль &quot;%1&quot; требует Qt %2, найдена версия %3.</translation>
</message>
<message>
<location line="+2"/>
@@ -1312,16 +1331,21 @@ to
<translation>Ошибка совместимости библиотеки Qt</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2287"/>
- <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>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
+ <source>Activate</source>
+ <translation>Активировать</translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+2"/>
+ <location line="+2"/>
<source>Activates the program&apos;s main window</source>
<translation>Активирует главное окно программы</translation>
</message>
+ <message>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="-13"/>
+ <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>
@@ -1367,7 +1391,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1355"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1378"/>
<source>Hu&amp;e:</source>
<translation>&amp;Тон:</translation>
</message>
@@ -1425,7 +1449,7 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1772"/>
<location line="+65"/>
<source>Open</source>
<translation>Открыть</translation>
@@ -1572,6 +1596,1113 @@ to
</message>
</context>
<context>
+ <name>QDeclarativeAbstractAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+166"/>
+ <source>Cannot animate non-existent property &quot;%1&quot;</source>
+ <translation>Невозможно анимировать несуществуещее свойство &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot animate read-only property &quot;%1&quot;</source>
+ <translation>Невозможно анимировать свойство только для чтения &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeutilmodule.cpp" line="+122"/>
+ <source>Animation is an abstract class</source>
+ <translation>Animation - это абстрактный класс</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeAnchorAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+2553"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation>Невозможно установить длительность &lt; 0</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeAnchors</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeanchors.cpp" line="+180"/>
+ <source>Possible anchor loop detected on fill.</source>
+ <translation type="unfinished">Обнаружена возможная цикличная привязка на fill.</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Possible anchor loop detected on centerIn.</source>
+ <translation type="unfinished">Обнаружена возможная цикличная привязка на centerIn.</translation>
+ </message>
+ <message>
+ <location line="+201"/>
+ <location line="+34"/>
+ <location line="+610"/>
+ <location line="+37"/>
+ <source>Cannot anchor to an item that isn&apos;t a parent or sibling.</source>
+ <translation type="unfinished">Невозможно установить привязку к элементу, не являющемуся родителем или соседом.</translation>
+ </message>
+ <message>
+ <location line="-534"/>
+ <source>Possible anchor loop detected on vertical anchor.</source>
+ <translation type="unfinished">Обнаружена возможная цикличная привязка к вертикальной привязке.</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Possible anchor loop detected on horizontal anchor.</source>
+ <translation type="unfinished">Обнаружена возможная цикличная привязка к горизонтальной привязке.</translation>
+ </message>
+ <message>
+ <location line="+422"/>
+ <source>Cannot specify left, right, and hcenter anchors.</source>
+ <translation type="unfinished">Невозможно задать левую, правую и среднюю привязки.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+37"/>
+ <source>Cannot anchor to a null item.</source>
+ <translation type="unfinished">Невозможно привязаться к нулевому элементу.</translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <source>Cannot anchor a horizontal edge to a vertical edge.</source>
+ <translation type="unfinished">Невозможно привязать горизонтальный край к вертикальному.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+37"/>
+ <source>Cannot anchor item to self.</source>
+ <translation type="unfinished">Невозможно привязать элемент к самому себе.</translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <source>Cannot specify top, bottom, and vcenter anchors.</source>
+ <translation type="unfinished">Невозможно задать верхнюю, нижнюю и среднюю привязки.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Baseline anchor cannot be used in conjunction with top, bottom, or vcenter anchors.</source>
+ <translation type="unfinished">Невозможно использовать базовую привязку вместе с верхней, нижней и центральной по вертикали.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot anchor a vertical edge to a horizontal edge.</source>
+ <translation type="unfinished">Невозможно привязать вертикальный край к горизонтальному.</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeAnimatedImage</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp" line="+86"/>
+ <source>Qt was built without support for QMovie</source>
+ <translation>Qt было собрано без поддержки QMovie</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeBehavior</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativebehavior.cpp" line="+127"/>
+ <source>Cannot change the animation assigned to a Behavior.</source>
+ <translation type="unfinished">Невозможно изменить анимацию, назначенную поведению.</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeBinding</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativebinding.cpp" line="+238"/>
+ <source>Binding loop detected for property &quot;%1&quot;</source>
+ <translation type="unfinished">Обнаружена цикличная привязка для свойства &quot;%1&quot;</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeCompiledBindings</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecompiledbindings.cpp" line="+372"/>
+ <source>Binding loop detected for property &quot;%1&quot;</source>
+ <translation type="unfinished">Обнаружена цикличная привязка для свойства &quot;%1&quot;</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeCompiler</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecompiler.cpp" line="+186"/>
+ <location line="+1592"/>
+ <location line="+186"/>
+ <location line="+81"/>
+ <location line="+75"/>
+ <location line="+487"/>
+ <source>Invalid property assignment: &quot;%1&quot; is a read-only property</source>
+ <translation>Некорректное присваивание свойства: &quot;%1&quot; свойство только для чтения</translation>
+ </message>
+ <message>
+ <location line="-2412"/>
+ <source>Invalid property assignment: unknown enumeration</source>
+ <translation>Некорректное присваивание свойства: неизвестное перечисление</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: string expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;string&quot;</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: url expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;url&quot;</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Invalid property assignment: unsigned int expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;unsigned int&quot;</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Invalid property assignment: int expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;int&quot;</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Invalid property assignment: float expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;float&quot;</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: double expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;double&quot;</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Invalid property assignment: color expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;color&quot;</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: date expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;date&quot;</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: time expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;time&quot;</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: datetime expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;datetime&quot;</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: point expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;point&quot;</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: size expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;size&quot;</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: rect expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;rect&quot;</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Invalid property assignment: boolean expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение булевого типа</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: 3D vector expected</source>
+ <translation>Некорректное присваивание свойства: ожидается значение типа &quot;трёхмерный вектор&quot;</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid property assignment: unsupported type &quot;%1&quot;</source>
+ <translation>Некорректное присваивание свойства: неподдерживаемый тип &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+275"/>
+ <source>Element is not creatable.</source>
+ <translation>Элемент не является создаваемым.</translation>
+ </message>
+ <message>
+ <location line="+618"/>
+ <source>Component elements may not contain properties other than id</source>
+ <translation type="unfinished">Элементы Component не могут содержать свойств кроме id</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid component id specification</source>
+ <translation type="unfinished">Некорректная спецификация id компонента</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+478"/>
+ <source>id is not unique</source>
+ <translation>id не уникален</translation>
+ </message>
+ <message>
+ <location line="-468"/>
+ <source>Invalid component body specification</source>
+ <translation type="unfinished">Некорректная спецификация тела компонента</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Component objects cannot declare new properties.</source>
+ <translation type="unfinished">Объекты Component не могут объявлять новые свойства.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Component objects cannot declare new signals.</source>
+ <translation type="unfinished">Объекты Component не могут объявлять новые сигналы.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Component objects cannot declare new functions.</source>
+ <translation type="unfinished">Объекты Component не могут объявлять новые функции.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Cannot create empty component specification</source>
+ <translation type="unfinished">Невозможно создать пустую спецификацю компонента</translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>Incorrectly specified signal assignment</source>
+ <translation type="unfinished">Неверно указано назначение сигнала</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Cannot assign a value to a signal (expecting a script to be run)</source>
+ <translation type="unfinished">Невозможно назначить значение сигналу (сценарий должен быть запущен)</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Empty signal assignment</source>
+ <translation type="unfinished">Пустое назначение сигнала</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Empty property assignment</source>
+ <translation type="unfinished">Пустое назначение свойства</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Attached properties cannot be used here</source>
+ <translatorcomment>здесь - в данном контексте?</translatorcomment>
+ <translation type="unfinished">Прикреплённые свойства не могут быть использованы здесь</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <location line="+102"/>
+ <source>Non-existent attached object</source>
+ <translation type="unfinished">Несуществующий прикреплённый объект</translation>
+ </message>
+ <message>
+ <location line="-98"/>
+ <location line="+101"/>
+ <source>Invalid attached object assignment</source>
+ <translation type="unfinished">Некорректное назначение прикреплённого объекта</translation>
+ </message>
+ <message>
+ <location line="-48"/>
+ <source>Cannot assign to non-existent default property</source>
+ <translation type="unfinished">Невозможно назначить несуществующему свойству по умолчанию</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location line="+352"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation type="unfinished">Невозможно назначить несуществующему свойству &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="-322"/>
+ <source>Invalid use of namespace</source>
+ <translation>Некорректное использование пространства имён</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Not an attached property name</source>
+ <translation type="unfinished">Не является именем привязанного свойства</translation>
+ </message>
+ <message>
+ <location line="+182"/>
+ <source>Invalid use of id property</source>
+ <translation type="unfinished">Некорректное использование свойства id</translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <location line="+2"/>
+ <source>Property has already been assigned a value</source>
+ <translation type="unfinished">Свойству уже назначено значение</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location line="+7"/>
+ <source>Invalid grouped property access</source>
+ <translation type="unfinished">Некорректный доступ к сгруппированному свойству</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot assign a value directly to a grouped property</source>
+ <translation type="unfinished">Невозможно присвоить значение непосредственно сгруппированному свойству</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Invalid property use</source>
+ <translation>Некорректное использование свойства</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Property assignment expected</source>
+ <translation type="unfinished">Ожидается назначение свойства</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Single property assignment expected</source>
+ <translation type="unfinished">Ожидается одиночное назначение свойства</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Unexpected object assignment</source>
+ <translation type="unfinished">Неожиданное назначение объекта</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Cannot assign object to list</source>
+ <translation type="unfinished">Невозможно назначить объект списку</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Can only assign one binding to lists</source>
+ <translation type="unfinished">Можно назначить только одну связь для списка</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Cannot assign primitives to lists</source>
+ <translation type="unfinished">Невозможно назначить примитивы списку</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot assign multiple values to a script property</source>
+ <translation type="unfinished">Невозможно назначить множественное значение свойству сценария</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: script expected</source>
+ <translation type="unfinished">Некорректное присваивание свойства: ожидается сценарий</translation>
+ </message>
+ <message>
+ <location line="+105"/>
+ <source>Cannot assign object to property</source>
+ <translation type="unfinished">Невозможно назначить объектсвойству</translation>
+ </message>
+ <message>
+ <location line="+50"/>
+ <source>&quot;%1&quot; cannot operate on &quot;%2&quot;</source>
+ <translation>&quot;%1&quot; не может воздействовать на &quot;%2&quot;</translation>
+ </message>
+ <message>
+ <location line="+117"/>
+ <source>Duplicate default property</source>
+ <translation type="unfinished">Дублирование свойства по умолчанию</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Duplicate property name</source>
+ <translation type="unfinished">Дублирование названия свойства</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Property names cannot begin with an upper case letter</source>
+ <translation>Названия свойств не могут начинаться с заглавной буквы</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Duplicate signal name</source>
+ <translation type="unfinished">Дублирование названия сигнала</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Signal names cannot begin with an upper case letter</source>
+ <translation>Названия сигналов не могут начинаться с заглавной буквы</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Duplicate method name</source>
+ <translation type="unfinished">Дублирование название метода</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Method names cannot begin with an upper case letter</source>
+ <translation>Названия методов не могут начинаться с заглавной буквы</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Property value set multiple times</source>
+ <translation type="unfinished">Значение свойства задано несколько раз</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Invalid property nesting</source>
+ <translation type="unfinished">Некорректное вложенность свойств</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Cannot override FINAL property</source>
+ <translation>Невозможно переопределить свойство FINAL</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Invalid property type</source>
+ <translation>Некорректный тип свойства</translation>
+ </message>
+ <message>
+ <location line="+159"/>
+ <source>Invalid empty ID</source>
+ <translation>Некорректный пустой идентификатор</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>IDs cannot start with an uppercase letter</source>
+ <translation>Идентификаторы не могут начинаться с заглавной буквы</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>IDs must start with a letter or underscore</source>
+ <translation>Идентификаторы должны начинаться с буквы или подчёркивания</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>IDs must contain only letters, numbers, and underscores</source>
+ <translation>Идентификаторы должны содержать только буквы, цифры и подчёркивания</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>ID illegally masks global JavaScript property</source>
+ <translation type="unfinished">Идентификатор неверно маскирует глобальное свойство JavaScript</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <location line="+9"/>
+ <source>No property alias location</source>
+ <translation type="unfinished">Отсутствует размещение псевдонима свойства</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <location line="+25"/>
+ <source>Invalid alias location</source>
+ <translation type="unfinished">Некорректное размещение псевдонима</translation>
+ </message>
+ <message>
+ <location line="-16"/>
+ <source>Invalid alias reference. An alias reference must be specified as &lt;id&gt; or &lt;id&gt;.&lt;property&gt;</source>
+ <translation type="unfinished">Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как &lt;id&gt; или &lt;id&gt;.&lt;property&gt;</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid alias reference. Unable to find id &quot;%1&quot;</source>
+ <translation type="unfinished">Некорректная ссылка на псевдоним. Не удалось найти id &quot;%1&quot;</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeComponent</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecomponent.cpp" line="+459"/>
+ <source>Invalid empty URL</source>
+ <translation>Пустой адрес URL</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeCompositeTypeManager</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecompositetypemanager.cpp" line="+475"/>
+ <location line="+266"/>
+ <source>Resource %1 unavailable</source>
+ <translation>Ресурс &quot;%1&quot; недоступен</translation>
+ </message>
+ <message>
+ <location line="-122"/>
+ <source>Namespace %1 cannot be used as a type</source>
+ <translation>Пространство имён &quot;%1&quot; не может быть использовано в качестве типа</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 %2</source>
+ <translation>%1 %2</translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <source>Type %1 unavailable</source>
+ <translation>Тип &quot;%1&quot; недоступен</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeConnections</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeconnections.cpp" line="+209"/>
+ <location line="+60"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation type="unfinished">Невозможно назначить несуществующему свойству &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="-50"/>
+ <source>Connections: nested objects not allowed</source>
+ <translation>Подключения: вложенные объекты недопустимы</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connections: syntax error</source>
+ <translation>Подключения: синтаксическая ошибка</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Connections: script expected</source>
+ <translation>Подключения: ожидается сценарий</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeEngine</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativesqldatabase.cpp" line="+204"/>
+ <source>executeSql called outside transaction()</source>
+ <translation>executeSql() вызван вне transaction()</translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>Read-only Transaction</source>
+ <translation>Транзакция только для чтения</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Version mismatch: expected %1, found %2</source>
+ <translation>Несовпадение версий: ожидалась %1, найдена %2</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>SQL transaction failed</source>
+ <translation>Не удалось выполнить транзакцию SQL</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>transaction: missing callback</source>
+ <translation>транзакция: отсутствует обратный вызов</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <location line="+16"/>
+ <source>SQL: database version mismatch</source>
+ <translation>Не совпадает версия базы данных SQL</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeFlipable</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeflipable.cpp" line="+127"/>
+ <source>front is a write-once property</source>
+ <translation>front - свойство для однократной записи</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>back is a write-once property</source>
+ <translation>back - свойство для однократной записи</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeImportDatabase</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativeimport.cpp" line="+294"/>
+ <source>module &quot;%1&quot; definition &quot;%2&quot; not readable</source>
+ <translation type="unfinished">невозможно прочитать определение &quot;%2&quot; модуля &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>plugin cannot be loaded for module &quot;%1&quot;: %2</source>
+ <translation type="unfinished">модуль не может быть загружен для подмодуля &quot;%1&quot;: %2</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>module &quot;%1&quot; plugin &quot;%2&quot; not found</source>
+ <translation type="unfinished">подмодуль &quot;%1&quot; модуля &quot;%2&quot; не найден</translation>
+ </message>
+ <message>
+ <location line="+79"/>
+ <location line="+55"/>
+ <source>module &quot;%1&quot; version %2.%3 is not installed</source>
+ <translation>модуль &quot;%1&quot; версии %2.%3 не установлен</translation>
+ </message>
+ <message>
+ <location line="-53"/>
+ <source>module &quot;%1&quot; is not installed</source>
+ <translation>модуль &quot;%1&quot; не установлен</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <location line="+19"/>
+ <source>&quot;%1&quot;: no such directory</source>
+ <translation>&quot;%1&quot;: каталог не существует</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>import &quot;%1&quot; has no qmldir and no namespace</source>
+ <translation type="unfinished">каталог &quot;%1&quot; не содержит ни qmldir, ни namespace</translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>- %1 is not a namespace</source>
+ <translation>- %1 - некорректное пространство имён</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>- nested namespaces not allowed</source>
+ <translation>- вложенные пространства имён недопустимы</translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <location line="+4"/>
+ <source>local directory</source>
+ <translation>локальный каталог</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>is ambiguous. Found in %1 and in %2</source>
+ <translation>неоднозначно. Найдено в %1 и %2</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>is ambiguous. Found in %1 in version %2.%3 and %4.%5</source>
+ <translation>неоднозначно. Найдено в %1 версий %2.%3 и %4.%5</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>is instantiated recursively</source>
+ <translation>обрабатывается рекурсивно</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>is not a type</source>
+ <translation>не является типом</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeKeyNavigationAttached</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp" line="+66"/>
+ <source>KeyNavigation is only available via attached properties</source>
+ <translation type="unfinished">KeyNavigation доступна только через прикреплённые свойства</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeKeysAttached</name>
+ <message>
+ <location line="+1"/>
+ <source>Keys is only available via attached properties</source>
+ <translation type="unfinished">Keys доступны только через прикреплённые свойства</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeListModel</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativelistmodel.cpp" line="+399"/>
+ <source>remove: index %1 out of range</source>
+ <translation>remove: индекс %1 вне диапазона</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>insert: value is not an object</source>
+ <translation>insert: значение не является объектом</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>insert: index %1 out of range</source>
+ <translation>insert: индекс %1 вне диапазона</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>move: out of range</source>
+ <translation>move: индекс вне диапазона</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>append: value is not an object</source>
+ <translation>append: значение не является объектом</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>set: value is not an object</source>
+ <translation>set: значение не является объектом</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location line="+34"/>
+ <source>set: index %1 out of range</source>
+ <translation>set: индекс %1 вне диапазона</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <location line="+15"/>
+ <source>ListElement: cannot contain nested elements</source>
+ <translation>ListElement: не может содержать вложенные элементы</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>ListElement: cannot use reserved &quot;id&quot; property</source>
+ <translation>ListElement: невозможно использовать зарезервированное свойство &quot;id&quot;</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>ListElement: cannot use script for property value</source>
+ <translation>ListElement: невозможно использовать сценарий в качестве значения свойства</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>ListModel: undefined property &apos;%1&apos;</source>
+ <translation>ListModel: неопределённое свойство &quot;%1&quot;</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeLoader</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeloader.cpp" line="+313"/>
+ <source>Loader does not support loading non-visual elements.</source>
+ <translation>Загрузчик не поддерживает загрузку невизуальных элементов.</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeParentAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="-169"/>
+ <source>Unable to preserve appearance under complex transform</source>
+ <translation>Невозможно сохранить внешний вид при сложном преобразовании</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under non-uniform scale</source>
+ <translation>Невозможно сохранить внешний вид при неоднородном масштабе</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under scale of 0</source>
+ <translation>Невозможно сохранить внешний вид при масштабе 0</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeParentChange</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativestateoperations.cpp" line="+95"/>
+ <source>Unable to preserve appearance under complex transform</source>
+ <translation>Невозможно сохранить внешний вид при сложном преобразовании</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under non-uniform scale</source>
+ <translation>Невозможно сохранить внешний вид при неоднородном масштабе</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under scale of 0</source>
+ <translation>Невозможно сохранить внешний вид при масштабе 0</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeParser</name>
+ <message>
+ <location filename="../src/declarative/qml/parser/qdeclarativejslexer.cpp" line="+542"/>
+ <location line="+123"/>
+ <location line="+54"/>
+ <source>Illegal unicode escape sequence</source>
+ <translation type="unfinished">Неверная unicode esc-последовательность</translation>
+ </message>
+ <message>
+ <location line="-140"/>
+ <source>Illegal character</source>
+ <translation>Недопустимый символ</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Unclosed string at end of line</source>
+ <translation>Незакрытый текст в конце строки</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Illegal escape squence</source>
+ <translation type="unfinished">Неверная esc-последовательность</translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <source>Unclosed comment at end of file</source>
+ <translation>Незакрытый комментарий в конце строки</translation>
+ </message>
+ <message>
+ <location line="+102"/>
+ <source>Illegal syntax for exponential number</source>
+ <translation type="unfinished">Недопустимый синтаксис для экспоненциального числа</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Identifier cannot start with numeric literal</source>
+ <translation>Идентификатор не может начинаться с цифры</translation>
+ </message>
+ <message>
+ <location line="+338"/>
+ <source>Unterminated regular expression literal</source>
+ <translation>Незаконченный литерал регулярного выражения</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Invalid regular expression flag &apos;%0&apos;</source>
+ <translation>Некорректный флаг &quot;%0&quot; в регулярном выражении</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <location line="+22"/>
+ <source>Unterminated regular expression backslash sequence</source>
+ <translation>Регулярное выражение содержит незавершённую экранированную последовательность</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unterminated regular expression class</source>
+ <translation>Регулярное выражение содержит незавершённый класс</translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/qml/parser/qdeclarativejsparser.cpp" line="+1828"/>
+ <location line="+67"/>
+ <source>Syntax error</source>
+ <translation>Синтаксическая ошибка</translation>
+ </message>
+ <message>
+ <location line="-65"/>
+ <source>Unexpected token `%1&apos;</source>
+ <translation>Неожиданный символ &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <location line="+24"/>
+ <source>Expected token `%1&apos;</source>
+ <translation>Ожидается символ &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativescriptparser.cpp" line="+260"/>
+ <location line="+431"/>
+ <location line="+59"/>
+ <source>Property value set multiple times</source>
+ <translation type="unfinished">Значение свойства установлено несколько раз</translation>
+ </message>
+ <message>
+ <location line="-479"/>
+ <source>Expected type name</source>
+ <translation>Ожидается название типа</translation>
+ </message>
+ <message>
+ <location line="+136"/>
+ <source>Invalid import qualifier ID</source>
+ <translation type="unfinished">Некорректный ID спецификатора импорта</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Reserved name &quot;Qt&quot; cannot be used as an qualifier</source>
+ <translation type="unfinished">Зарезервированное имя &quot;Qt&quot; не может быть использовано в качестве спецификатора</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Script import qualifiers must be unique.</source>
+ <translation type="unfinished">Спецификаторы импорта сценария должны быть уникальными.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Script import requires a qualifier</source>
+ <translation type="unfinished">Для импорта сценария требуется спецификатор</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Library import requires a version</source>
+ <translation type="unfinished">Импорт библиотеки требует версию</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Expected parameter type</source>
+ <translation>Ожидается тип параметра</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Invalid property type modifier</source>
+ <translation>Некорректный модификатор типа свойства</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Unexpected property type modifier</source>
+ <translation>Неожиданный модификатор типа свойства</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Expected property type</source>
+ <translation>Ожидается тип свойства</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Readonly not yet supported</source>
+ <translation type="unfinished">Readonly ещё не поддерживается</translation>
+ </message>
+ <message>
+ <location line="+215"/>
+ <source>JavaScript declaration outside Script element</source>
+ <translation>Определение JavaScript вне элемента Script</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePauseAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="-1977"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation>Невозможно установить длительность &lt; 0</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePixmapCache</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativepixmapcache.cpp" line="+190"/>
+ <source>Error decoding: %1: %2</source>
+ <translation>Ошибка декодирования: %1: %2</translation>
+ </message>
+ <message>
+ <location line="+70"/>
+ <source>Failed to get image from provider: %1</source>
+ <translation>Не удалось получить изображение от поставщика: %1</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <location line="+345"/>
+ <source>Cannot open: %1</source>
+ <translation>Не удалось открыть: %1</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Unknown Error loading %1</source>
+ <translation>Неизвестная ошибка загрузки %1</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePropertyAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+1102"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation>Невозможно установить длительность &lt; 0</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativePropertyChanges</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativepropertychanges.cpp" line="+252"/>
+ <source>PropertyChanges does not support creating state-specific objects.</source>
+ <translation type="unfinished">PropertyChanges не поддерживают создание объектов, зависимых от состояния.</translation>
+ </message>
+ <message>
+ <location line="+157"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation type="unfinished">Невозможно назначить несуществующему свойству &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot assign to read-only property &quot;%1&quot;</source>
+ <translation type="unfinished">Невозможно назначить свойству только для чтения &quot;%1&quot;</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeTextInput</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativetextinput.cpp" line="+798"/>
+ <location line="+8"/>
+ <source>Could not load cursor delegate</source>
+ <translation type="unfinished">Не удалось загрузить делегат курсора</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Could not instantiate cursor delegate</source>
+ <translation type="unfinished">Не удалось инстанциировать делегат курсора</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeVME</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativevme.cpp" line="+194"/>
+ <source>Unable to create object of type %1</source>
+ <translation>Невозможно создать объект типа &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location line="+390"/>
+ <source>Cannot assign value %1 to property %2</source>
+ <translation>Невозможно установить значение &quot;%1&quot; свойству &quot;%2&quot;</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Cannot assign object type %1 with no default method</source>
+ <translation type="unfinished">Невозможно назначить объект типа %1 без метода по умолчанию</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot connect mismatched signal/slot %1 %vs. %2</source>
+ <translation type="unfinished">Невозможно подключить отсутствующий сигнал/слот %1 к %2</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cannot assign an object to signal property %1</source>
+ <translation type="unfinished">Невозможно назначить объект к свойству сигнала %1</translation>
+ </message>
+ <message>
+ <location line="+146"/>
+ <source>Cannot assign object to list</source>
+ <translation type="unfinished">Невозможно назначить объект списку</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Cannot assign object to interface property</source>
+ <translation type="unfinished">Невозможно назначить объект свойству интерфейса</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unable to create attached object</source>
+ <translation type="unfinished">Не удалось создать вложенный объект</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Cannot set properties on %1 as it is null</source>
+ <translation type="unfinished">Невозможно установить свойства для %1, так как он нулевой</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeVisualDataModel</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp" line="+1088"/>
+ <source>Delegate component must be Item type.</source>
+ <translation type="unfinished">Компинент делегата должен быть типа Item.</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeXmlListModel</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativeutilmodule.cpp" line="-12"/>
+ <location line="+2"/>
+ <source>Qt was built without support for xmlpatterns</source>
+ <translation>Qt было собрано без поддержки xmlpatterns</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeXmlListModelRole</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel_p.h" line="+174"/>
+ <source>An XmlRole query must not start with &apos;/&apos;</source>
+ <translation type="unfinished">Запрос XmlRole не должен начинаться с &apos;/&apos;</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeXmlRoleList</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="+712"/>
+ <source>An XmlListModel query must start with &apos;/&apos; or &quot;//&quot;</source>
+ <translation type="unfinished">Запрос XmlListModel должен начинаться с &apos;/&apos; или &quot;//&quot;</translation>
+ </message>
+</context>
+<context>
<name>QDial</name>
<message>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
@@ -1592,12 +2723,12 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+652"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+645"/>
<source>What&apos;s This?</source>
<translation>Что это?</translation>
</message>
<message>
- <location line="-135"/>
+ <location line="-122"/>
<source>Done</source>
<translation>Готово</translation>
</message>
@@ -1605,51 +2736,46 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1876"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1920"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+650"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+649"/>
<source>OK</source>
<translation>ОК</translation>
</message>
<message>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+0"/>
- <source>&amp;OK</source>
- <translation>&amp;ОК</translation>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+3"/>
+ <source>Save</source>
+ <translation>Сохранить</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+0"/>
<source>&amp;Save</source>
<translation>&amp;Сохранить</translation>
</message>
<message>
- <location line="+0"/>
- <source>Save</source>
- <translation>Сохранить</translation>
- </message>
- <message>
<location line="+3"/>
<source>Open</source>
<translation>Открыть</translation>
</message>
<message>
<location line="+3"/>
- <source>&amp;Cancel</source>
- <translation>От&amp;мена</translation>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
</message>
<message>
<location line="+0"/>
- <source>Cancel</source>
- <translation>Отмена</translation>
+ <source>&amp;Cancel</source>
+ <translation>От&amp;мена</translation>
</message>
<message>
<location line="+3"/>
- <source>&amp;Close</source>
- <translation>&amp;Закрыть</translation>
+ <source>Close</source>
+ <translation>Закрыть</translation>
</message>
<message>
<location line="+0"/>
- <source>Close</source>
- <translation>Закрыть</translation>
+ <source>&amp;Close</source>
+ <translation>&amp;Закрыть</translation>
</message>
<message>
<location line="+3"/>
@@ -1726,6 +2852,11 @@ to
<source>Close without Saving</source>
<translation>Закрыть без сохранения</translation>
</message>
+ <message>
+ <location line="-27"/>
+ <source>&amp;OK</source>
+ <translation>&amp;ОК</translation>
+ </message>
</context>
<context>
<name>QDirModel</name>
@@ -1791,7 +2922,17 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+208"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+414"/>
+ <source>&amp;Show this message again</source>
+ <translation>&amp;Показывать это сообщение в дальнейшем</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;OK</source>
+ <translation>&amp;Закрыть</translation>
+ </message>
+ <message>
+ <location line="-207"/>
<source>Debug Message:</source>
<translation>Отладочное сообщение:</translation>
</message>
@@ -1805,21 +2946,11 @@ to
<source>Fatal Error:</source>
<translation>Критическая ошибка:</translation>
</message>
- <message>
- <location line="+200"/>
- <source>&amp;Show this message again</source>
- <translation>&amp;Показывать это сообщение в дальнейшем</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>&amp;OK</source>
- <translation>&amp;Закрыть</translation>
- </message>
</context>
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+698"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+703"/>
<location line="+155"/>
<source>Destination file exists</source>
<translation>Файл существует</translation>
@@ -1858,18 +2989,71 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+557"/>
- <location line="+471"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+558"/>
+ <location line="+481"/>
<source>All Files (*)</source>
<translation>Все файлы (*)</translation>
</message>
<message>
- <location line="+216"/>
- <source>Directories</source>
- <translation>Каталоги</translation>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Back</source>
+ <translation>Назад</translation>
</message>
<message>
- <location line="-3"/>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>List View</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Detail View</source>
+ <translation>Подробный вид</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+467"/>
+ <location line="+1"/>
+ <source>File</source>
+ <translation>Файл</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>File Folder</source>
+ <comment>Match Windows Explorer</comment>
+ <translation>Папка с файлами</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Folder</source>
+ <comment>All other platforms</comment>
+ <translation>Папка</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Alias</source>
+ <comment>Mac OS X Finder</comment>
+ <translation>Псевдоним</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Shortcut</source>
+ <comment>All other platforms</comment>
+ <translation>Ярлык</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-498"/>
+ <source>Open</source>
+ <translation>Открыть</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Save As</source>
+ <translation>Сохранить как</translation>
+ </message>
+ <message>
+ <location line="+709"/>
<location line="+55"/>
<location line="+1532"/>
<source>&amp;Open</source>
@@ -1882,12 +3066,59 @@ to
<translation>&amp;Сохранить</translation>
</message>
<message>
- <location line="-756"/>
- <source>Open</source>
- <translation>Открыть</translation>
+ <location line="+1381"/>
+ <source>&apos;%1&apos; is write protected.
+Do you want to delete it anyway?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+424"/>
+ <source>Recent Places</source>
+ <translation>Недавние документы</translation>
</message>
<message>
- <location line="+1527"/>
+ <location line="-2540"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Переименовать</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Удалить</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show &amp;hidden files</source>
+ <translation>Показать ск&amp;рытые файлы</translation>
+ </message>
+ <message>
+ <location line="+1986"/>
+ <source>New Folder</source>
+ <translation>Новая папка</translation>
+ </message>
+ <message>
+ <location line="-2021"/>
+ <source>Find Directory</source>
+ <translation>Найти каталог</translation>
+ </message>
+ <message>
+ <location line="+716"/>
+ <source>Directories</source>
+ <translation>Каталоги</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+148"/>
+ <source>All Files (*.*)</source>
+ <translation>Все файлы (*.*)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-675"/>
+ <location line="+679"/>
+ <source>Directory:</source>
+ <translation>Каталог:</translation>
+ </message>
+ <message>
+ <location line="+819"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 уже существует.
@@ -1908,58 +3139,19 @@ Please verify the correct file name was given.</source>
<translation>Мой компьютер</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1516"/>
- <source>&amp;Rename</source>
- <translation>&amp;Переименовать</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>&amp;Delete</source>
- <translation>&amp;Удалить</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Show &amp;hidden files</source>
- <translation>Показать ск&amp;рытые файлы</translation>
- </message>
- <message>
<location filename="../src/gui/dialogs/qfiledialog.ui"/>
<location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>Back</source>
- <translation>Назад</translation>
- </message>
- <message>
- <location/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
<source>Parent Directory</source>
<translation>Родительский каталог</translation>
</message>
<message>
<location/>
<location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>List View</source>
- <translation>Список</translation>
- </message>
- <message>
- <location/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
- <source>Detail View</source>
- <translation>Подробный вид</translation>
- </message>
- <message>
- <location/>
- <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
<source>Files of type:</source>
<translation>Типы файлов:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
- <location line="+669"/>
- <source>Directory:</source>
- <translation>Каталог:</translation>
- </message>
- <message>
- <location line="+785"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
<location line="+862"/>
<source>%1
Directory not found.
@@ -1969,16 +3161,9 @@ 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>&apos;%1&apos; защищён от записи.
-Всё-равно хотите удалить?</translation>
- </message>
- <message>
- <location line="+5"/>
+ <location line="-213"/>
<source>Are sure you want to delete &apos;%1&apos;?</source>
- <translation>Вы действительно хотите удалить &apos;%1&apos;?</translation>
+ <translation>Вы действительно хотите удалить &quot;%1&quot;?</translation>
</message>
<message>
<location line="+15"/>
@@ -1986,67 +3171,17 @@ Do you want to delete it anyway?</source>
<translation>Не удалось удалить каталог.</translation>
</message>
<message>
- <location line="+404"/>
- <source>Recent Places</source>
- <translation>Недавние документы</translation>
- </message>
- <message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+174"/>
- <source>All Files (*.*)</source>
- <translation>Все файлы (*.*)</translation>
- </message>
- <message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2559"/>
- <source>Save As</source>
- <translation>Сохранить как</translation>
- </message>
- <message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+462"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="-22"/>
<source>Drive</source>
<translation>Диск</translation>
</message>
<message>
- <location line="+3"/>
- <location line="+1"/>
- <source>File</source>
- <translation>Файл</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>File Folder</source>
- <comment>Match Windows Explorer</comment>
- <translation>Папка с файлами</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>Folder</source>
- <comment>All other platforms</comment>
- <translation>Папка</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>Alias</source>
- <comment>Mac OS X Finder</comment>
- <translation>Псевдоним</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>Shortcut</source>
- <comment>All other platforms</comment>
- <translation>Ярлык</translation>
- </message>
- <message>
- <location line="+7"/>
+ <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"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2140"/>
<source>Show </source>
<translation>Показать </translation>
</message>
@@ -2057,17 +3192,12 @@ Do you want to delete it anyway?</source>
<translation>Вперёд</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1982"/>
- <source>New Folder</source>
- <translation>Новая папка</translation>
- </message>
- <message>
- <location line="-1975"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+7"/>
<source>&amp;New Folder</source>
<translation>&amp;Новая папка</translation>
</message>
<message>
- <location line="+677"/>
+ <location line="+687"/>
<location line="+43"/>
<source>&amp;Choose</source>
<translation>&amp;Выбрать</translation>
@@ -2078,8 +3208,8 @@ Do you want to delete it anyway?</source>
<translation>Удалить</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-713"/>
- <location line="+673"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-723"/>
+ <location line="+683"/>
<source>File &amp;name:</source>
<translation>&amp;Имя файла:</translation>
</message>
@@ -2095,16 +3225,70 @@ Do you want to delete it anyway?</source>
<source>Create New Folder</source>
<translation>Создать папку</translation>
</message>
+ <message>
+ <location/>
+ <source>Go back</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Go forward</source>
+ <translation>Вперёд</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Go to the parent directory</source>
+ <translation>Перейти в родительский каталог</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Create a New Folder</source>
+ <translation>Создать новую папку</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Change to list view mode</source>
+ <translation>Переключить в режим списка</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Change to detail view mode</source>
+ <translation>Переключить в подробный режим</translation>
+ </message>
</context>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+483"/>
- <source>%1 byte(s)</source>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+740"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+482"/>
+ <source>%1 TB</source>
+ <translation>%1 Тб</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
+ <source>%1 GB</source>
+ <translation>%1 Гб</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
+ <source>%1 MB</source>
+ <translation>%1 Мб</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
+ <source>%1 KB</source>
+ <translation>%1 Кб</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1 bytes</source>
<translation>%1 байт</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+828"/>
+ <location line="+89"/>
<source>Invalid filename</source>
<translation>Некорректное имя файла</translation>
</message>
@@ -2141,7 +3325,7 @@ Do you want to delete it anyway?</source>
<translation>Дата изменения</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+258"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+261"/>
<source>My Computer</source>
<translation>Мой компьютер</translation>
</message>
@@ -2151,32 +3335,8 @@ Do you want to delete it anyway?</source>
<translation>Компьютер</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="-164"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="-7"/>
- <source>%1 TB</source>
- <translation>%1 Тб</translation>
- </message>
- <message>
- <location line="+2"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
- <source>%1 GB</source>
- <translation>%1 Гб</translation>
- </message>
- <message>
- <location line="+2"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
- <source>%1 MB</source>
- <translation>%1 Мб</translation>
- </message>
- <message>
- <location line="+2"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+2"/>
- <source>%1 KB</source>
- <translation>%1 Кб</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>%1 bytes</source>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+1"/>
+ <source>%1 byte(s)</source>
<translation>%1 байт</translation>
</message>
</context>
@@ -2319,7 +3479,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<source>Malayalam</source>
- <translation>Малаяльская</translation>
+ <translation>Малайялам</translation>
</message>
<message>
<location line="+3"/>
@@ -2344,7 +3504,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<source>Myanmar</source>
- <translation>Майанмарская</translation>
+ <translation>Мьянма</translation>
</message>
<message>
<location line="+3"/>
@@ -2405,7 +3565,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+776"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+768"/>
<source>&amp;Font</source>
<translation>&amp;Шрифт</translation>
</message>
@@ -2440,28 +3600,55 @@ Do you want to delete it anyway?</source>
<translation>Пример</translation>
</message>
<message>
- <location line="+1"/>
- <source>Wr&amp;iting System</source>
- <translation>&amp;Система письма</translation>
- </message>
- <message>
- <location line="-609"/>
- <location line="+257"/>
+ <location line="-595"/>
<source>Select Font</source>
<translation>Выбор шрифта</translation>
</message>
+ <message>
+ <location line="+596"/>
+ <source>Wr&amp;iting System</source>
+ <translation>&amp;Система письма</translation>
+ </message>
</context>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+828"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
- <source>Not connected</source>
- <translation>Соединение не установлено</translation>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
+ <source>Host %1 found</source>
+ <translation>Узел %1 найден</translation>
</message>
<message>
- <location line="+68"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+65"/>
+ <location line="+7"/>
+ <source>Host found</source>
+ <translation>Узел найден</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="+1008"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
+ <location line="+1451"/>
+ <source>Connected to host %1</source>
+ <translation>Установлено соединение с узлом %1</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+7"/>
+ <source>Connected to host</source>
+ <translation>Соединение с узлом установлено</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Connection to %1 closed</source>
+ <translation>Соединение с %1 закрыто</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="+1383"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-243"/>
+ <location line="+250"/>
+ <source>Connection closed</source>
+ <translation>Соединение закрыто</translation>
+ </message>
+ <message>
+ <location line="-1495"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1566"/>
<source>Host %1 not found</source>
<translation>Узел %1 не найден</translation>
</message>
@@ -2477,28 +3664,15 @@ Do you want to delete it anyway?</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="+501"/>
<location line="+29"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+195"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+458"/>
<location line="+728"/>
<source>Unknown error</source>
<translation>Неизвестная ошибка</translation>
</message>
<message>
- <location line="+891"/>
+ <location line="+897"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+77"/>
<source>Connecting to host failed:
%1</source>
@@ -2570,47 +3744,37 @@ Do you want to delete it anyway?</source>
%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>
+ <location line="-1535"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1356"/>
+ <source>Not connected</source>
+ <translation>Соединение не установлено</translation>
</message>
<message>
- <location line="+2"/>
- <source>Connected to host</source>
- <translation>Соединение с узлом установлено</translation>
+ <location line="+399"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+332"/>
+ <source>Connection refused for data connection</source>
+ <translation>Отказ в соединении для передачи данных</translation>
</message>
</context>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+101"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+103"/>
<source>Unknown error</source>
<translation>Неизвестная ошибка</translation>
</message>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+171"/>
+ <source>No host name given</source>
+ <translation>Имя узла не задано</translation>
+ </message>
</context>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+257"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+260"/>
<location line="+32"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+216"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+215"/>
<location line="+27"/>
<source>Host not found</source>
<translation>Узел не найден</translation>
@@ -2631,12 +3795,14 @@ Do you want to delete it anyway?</source>
<translation>Неизвестная ошибка</translation>
</message>
<message>
+ <location line="-98"/>
<location filename="../src/network/kernel/qhostinfo_win.cpp" line="-67"/>
<source>No host name given</source>
<translation>Имя узла не задано</translation>
</message>
<message>
- <location line="+0"/>
+ <location line="+1"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+0"/>
<source>Invalid hostname</source>
<translation>Некорректное имя узла</translation>
</message>
@@ -2644,113 +3810,113 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+1582"/>
- <location line="+820"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1159"/>
- <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>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-6"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1835"/>
+ <source>Connection refused</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>
+ <location filename="../src/network/access/qhttp.cpp" line="+2639"/>
+ <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="+164"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+56"/>
+ <location line="-62"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-45"/>
<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>
+ <location line="+82"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+48"/>
+ <source>HTTP request failed</source>
+ <translation>HTTP-запрос не удался</translation>
</message>
<message>
- <location line="+200"/>
- <source>Unknown authentication method</source>
- <translation>Неизвестный метод авторизации</translation>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+450"/>
+ <source>Host %1 found</source>
+ <translation>Узел %1 найден</translation>
</message>
<message>
- <location line="+183"/>
- <source>Error writing response to device</source>
- <translation>Ошибка записи ответа на устройство</translation>
+ <location line="+14"/>
+ <source>Host found</source>
+ <translation>Узел найден</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-6"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
- <source>Connection refused</source>
- <translation>Отказано в соединении</translation>
+ <location line="-11"/>
+ <source>Connected to host %1</source>
+ <translation>Установлено соединение с узлом %1</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-325"/>
- <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>
+ <location line="+14"/>
+ <source>Connected to host</source>
+ <translation>Соединение с узлом установлено</translation>
</message>
<message>
- <location line="+20"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
- <source>HTTP request failed</source>
- <translation>HTTP-запрос не удался</translation>
+ <location line="-11"/>
+ <source>Connection to %1 closed</source>
+ <translation>Соединение с узлом %1 закрыто</translation>
</message>
<message>
- <location line="+94"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+69"/>
- <source>Invalid HTTP response header</source>
- <translation>Некорректный HTTP-заголовок ответа</translation>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+7"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+14"/>
+ <source>Connection closed</source>
+ <translation>Соединение закрыто</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>
+ <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 filename="../src/qt3support/network/q3http.cpp" line="+294"/>
- <source>Host %1 found</source>
- <translation>Узел %1 найден</translation>
+ <location line="-568"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
+ <source>Request aborted</source>
+ <translation>Запрос прерван</translation>
</message>
<message>
- <location line="+3"/>
- <source>Connected to host %1</source>
- <translation>Установлено соединение с узлом %1</translation>
+ <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="+3"/>
- <source>Connection to %1 closed</source>
- <translation>Соединение с узлом %1 закрыто</translation>
+ <location line="+168"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+60"/>
+ <source>Server closed connection unexpectedly</source>
+ <translation>Сервер неожиданно разорвал соединение</translation>
</message>
<message>
- <location line="+8"/>
- <source>Host found</source>
- <translation>Узел найден</translation>
+ <location line="+172"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+113"/>
+ <source>Invalid HTTP response header</source>
+ <translation>Некорректный HTTP-заголовок ответа</translation>
</message>
<message>
- <location line="+3"/>
- <source>Connected to host</source>
- <translation>Соединение с узлом установлено</translation>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation>Неизвестный метод авторизации</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+7"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
- <source>Connection closed</source>
- <translation>Соединение закрыто</translation>
+ <location line="+97"/>
+ <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 line="+38"/>
+ <source>Error writing response to device</source>
+ <translation>Ошибка записи ответа на устройство</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-135"/>
+ <location line="-173"/>
<source>Proxy authentication required</source>
<translation>Требуется авторизация на прокси-сервере</translation>
</message>
@@ -2760,11 +3926,6 @@ Do you want to delete it anyway?</source>
<translation>Требуется авторизация</translation>
</message>
<message>
- <location line="-159"/>
- <source>Connection refused (or timed out)</source>
- <translation>В соединении отказано (или время ожидания истекло)</translation>
- </message>
- <message>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+6"/>
<source>Proxy requires authentication</source>
<translation>Прокси-сервер требует авторизацию</translation>
@@ -2780,17 +3941,22 @@ Do you want to delete it anyway?</source>
<translation>Данные повреждены</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+6"/>
+ <source>SSL handshake failed</source>
+ <translation>Квитирование SSL не удалось</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>
+ <location filename="../src/network/access/qhttp.cpp" line="-159"/>
+ <source>Connection refused (or timed out)</source>
+ <translation>В соединении отказано (или время ожидания истекло)</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-2266"/>
+ <location line="-2266"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation>Запрошено соединение по протоколу HTTPS, но поддержка SSL не скомпилирована</translation>
</message>
@@ -2959,7 +4125,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+2094"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+2120"/>
<source>Permission denied</source>
<translation>Доступ запрещён</translation>
</message>
@@ -2979,7 +4145,7 @@ Do you want to delete it anyway?</source>
<translation>Нет свободного места на устройстве</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1565"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1598"/>
<source>Unknown error</source>
<translation>Неизвестная ошибка</translation>
</message>
@@ -2987,7 +4153,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+256"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+301"/>
<source>XIM</source>
<translation>Метод ввода X-сервера</translation>
</message>
@@ -3030,27 +4196,27 @@ Do you want to delete it anyway?</source>
<message>
<location filename="../src/corelib/plugin/qlibrary.cpp" line="+383"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
- <translation>Не удалось выполнить mmap &apos;%1&apos;: %2</translation>
+ <translation>Не удалось выполнить mmap &quot;%1&quot;: %2</translation>
</message>
<message>
<location line="+22"/>
<source>Plugin verification data mismatch in &apos;%1&apos;</source>
- <translation>Проверочная информация для модуля &apos;%1&apos; не совпадает</translation>
+ <translation>Проверочная информация для модуля &quot;%1&quot; не совпадает</translation>
</message>
<message>
<location line="+6"/>
<source>Could not unmap &apos;%1&apos;: %2</source>
- <translation>Не удалось выполнить unmap &apos;%1&apos;: %2</translation>
+ <translation>Не удалось выполнить unmap &quot;%1&quot;: %2</translation>
</message>
<message>
- <location line="+345"/>
+ <location line="+375"/>
<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>
+ <translation>Модуль &quot;%1&quot; использует несоместимую библиотеку 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>
+ <translation>Модуль &quot;%1&quot; использует несоместимую библиотеку Qt. Ожидается ключ &quot;%2&quot;, но получен ключ &quot;%3&quot;</translation>
</message>
<message>
<location line="+365"/>
@@ -3058,7 +4224,8 @@ Do you want to delete it anyway?</source>
<translation>Неизвестная ошибка</translation>
</message>
<message>
- <location line="-402"/>
+ <location line="-540"/>
+ <location line="+138"/>
<location filename="../src/corelib/plugin/qpluginloader.cpp" line="+343"/>
<source>The shared library was not found.</source>
<translation>Динамическая библиотека не найдена.</translation>
@@ -3066,12 +4233,12 @@ Do you want to delete it anyway?</source>
<message>
<location line="+2"/>
<source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
- <translation>Файл &apos;%1&apos; - не является корректным модулем Qt.</translation>
+ <translation>Файл &quot;%1&quot; - не является корректным модулем 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>Модуль &apos;%1&apos; использует несоместимую библиотеку Qt. (Невозможно совместить релизные и отладочные библиотеки.)</translation>
+ <translation>Модуль &quot;%1&quot; использует несоместимую библиотеку Qt. (Невозможно совместить релизные и отладочные библиотеки.)</translation>
</message>
<message>
<location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+236"/>
@@ -3095,7 +4262,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2072"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2116"/>
+ <source>Select All</source>
+ <translation>Выделить всё</translation>
+ </message>
+ <message>
+ <location line="-40"/>
<source>&amp;Undo</source>
<translation>&amp;Отменить действие</translation>
</message>
@@ -3124,11 +4296,6 @@ Do you want to delete it anyway?</source>
<source>Delete</source>
<translation>Удалить</translation>
</message>
- <message>
- <location line="+8"/>
- <source>Select All</source>
- <translation>Выделить всё</translation>
- </message>
</context>
<context>
<name>QLocalServer</name>
@@ -3171,7 +4338,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="+80"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+79"/>
<location line="+59"/>
<source>%1: Invalid name</source>
<translation>%1: Некорректное имя</translation>
@@ -3228,7 +4395,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1270"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1287"/>
<source>Unable to open database &apos;</source>
<translation>Невозможно открыть базу данных &apos;</translation>
</message>
@@ -3380,12 +4547,7 @@ Do you want to delete it anyway?</source>
<translation>&amp;Закрыть</translation>
</message>
<message>
- <location line="-787"/>
- <source>- [%1]</source>
- <translation>- [%1]</translation>
- </message>
- <message>
- <location line="+58"/>
+ <location line="-729"/>
<source>Maximize</source>
<translation>Распахнуть</translation>
</message>
@@ -3414,6 +4576,11 @@ Do you want to delete it anyway?</source>
<source>Menu</source>
<translation>Меню</translation>
</message>
+ <message>
+ <location line="-79"/>
+ <source>- [%1]</source>
+ <translation>- [%1]</translation>
+ </message>
</context>
<context>
<name>QMenu</name>
@@ -3440,7 +4607,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenuBar</name>
<message>
- <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+436"/>
+ <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+456"/>
<source>Actions</source>
<translation>Действия</translation>
</message>
@@ -3448,12 +4615,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1116"/>
- <source>Help</source>
- <translation>Справка</translation>
- </message>
- <message>
- <location line="-848"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
<location line="+847"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -3461,30 +4623,35 @@ Do you want to delete it anyway?</source>
<translation>Закрыть</translation>
</message>
<message>
- <location line="+513"/>
+ <location line="+477"/>
+ <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+ <translation>&lt;h3&gt;О Qt&lt;/h3&gt;&lt;p&gt;Данная программа использует Qt версии %1.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Qt - это инструментарий для разработки кроссплатформенных приложений на C++.&lt;/p&gt;&lt;p&gt;Qt предоставляет совместимость на уровне исходных текстов между MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux и всеми популярными коммерческими вариантами Unix. Также Qt доступна для встраиваемых устройств в виде Qt для Embedded Linux и Qt для Windows CE.&lt;/p&gt;&lt;p&gt;Qt доступна под тремя различными лицензиями, разработанными для удовлетворения различных требований.&lt;/p&gt;&lt;p&gt;Qt под нашей коммерческой лицензией предназначена для развития проприетарного/коммерческого программного обеспечения, когда Вы не желаете предоставлять исходные тексты третьим сторонам, или в случае невозможности принятия условий лицензий GNU LGPL версии 2.1 или GNU GPL версии 3.0.&lt;/p&gt;&lt;p&gt;Qt под лицензией GNU LGPL версии 2.1 предназначена для разработки программного обеспечения с открытыми исходными текстами или коммерческого программного обеспечения при соблюдении условий лицензии GNU LGPL версии 2.1.&lt;/p&gt;&lt;p&gt;Qt под лицензией GNU General Public License версии 3.0 предназначена для разработки программных приложений в тех случаях, когда Вы хотели бы использовать такие приложения в сочетании с программным обеспечением на условиях лицензии GNU GPL с версии 3.0 или если Вы готовы соблюдать условия лицензии GNU GPL версии 3.0.&lt;/p&gt;&lt;p&gt;Обратитесь к &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; для обзора лицензий Qt.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Корпорация Nokia и/или её дочерние подразделения.&lt;/p&gt;&lt;p&gt;Qt - продукт компании Nokia. Обратитесь к &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; для получения дополнительной информации.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location line="+31"/>
<source>About Qt</source>
<translation>О Qt</translation>
</message>
<message>
- <location line="-1614"/>
+ <location line="-512"/>
+ <source>Help</source>
+ <translation>Справка</translation>
+ </message>
+ <message>
+ <location line="-1129"/>
<source>Show Details...</source>
<translation>Показать подробности...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+0"/>
<source>Hide Details...</source>
<translation>Скрыть подробности...</translation>
</message>
- <message>
- <location line="+1577"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;О Qt&lt;/h3&gt;&lt;p&gt;Данная программа использует Qt версии %1.&lt;/p&gt;</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Qt - это инструментарий для разработки кроссплатформенных приложений на C++.&lt;/p&gt;&lt;p&gt;Qt предоставляет совместимость на уровне исходных текстов между MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux и всеми популярными коммерческими вариантами Unix. Также Qt доступна для встраиваемых устройств в виде Qt для Embedded Linux и Qt для Windows CE.&lt;/p&gt;&lt;p&gt;Qt доступна под тремя различными лицензиями, разработанными для удовлетворения различных требований.&lt;/p&gt;&lt;p&gt;Qt под нашей коммерческой лицензией предназначена для развития проприетарного/коммерческого программного обеспечения, когда Вы не желаете предоставлять исходные тексты третьим сторонам, или в случае невозможности принятия условий лицензий GNU LGPL версии 2.1 или GNU GPL версии 3.0.&lt;/p&gt;&lt;p&gt;Qt под лицензией GNU LGPL версии 2.1 предназначена для разработки программного обеспечения с открытыми исходными текстами или коммерческого программного обеспечения при соблюдении условий лицензии GNU LGPL версии 2.1.&lt;/p&gt;&lt;p&gt;Qt под лицензией GNU General Public License версии 3.0 предназначена для разработки программных приложений в тех случаях, когда Вы хотели бы использовать такие приложения в сочетании с программным обеспечением на условиях лицензии GNU GPL с версии 3.0 или если Вы готовы соблюдать условия лицензии GNU GPL версии 3.0.&lt;/p&gt;&lt;p&gt;Обратитесь к &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; для обзора лицензий Qt.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Корпорация Nokia и/или её дочерние подразделения.&lt;/p&gt;&lt;p&gt;Qt - продукт компании Nokia. Обратитесь к &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; для получения дополнительной информации.&lt;/p&gt;</translation>
- </message>
</context>
<context>
<name>QMultiInputContext</name>
@@ -3499,19 +4666,18 @@ Do you want to delete it anyway?</source>
<message>
<location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
- <translation type="unfinished">Переключатель режима множественного ввода</translation>
+ <translation>Переключатель режима множественного ввода</translation>
</message>
<message>
<location line="+7"/>
<source>Multiple input method switcher that uses the context menu of the text widgets</source>
- <translatorcomment>текстовых виджетов &lt;-?-&gt; текстовых редакторов</translatorcomment>
- <translation type="unfinished">Переключатель режима множественного ввода, используемый в контекстном меню текстовых виджетов</translation>
+ <translation>Переключатель режима множественного ввода, используемый в контекстном меню текстовых редакторов</translation>
</message>
</context>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+209"/>
<source>The remote host closed the connection</source>
<translation>Удалённый узел закрыл соединение</translation>
</message>
@@ -3650,12 +4816,35 @@ Do you want to delete it anyway?</source>
</message>
</context>
<context>
+ <name>QNetworkAccessDataBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+76"/>
+ <source>Operation not supported on %1</source>
+ <translation>Операция не поддерживается для %1</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Invalid URI: %1</source>
+ <translation>Некорректный URI: %1</translation>
+ </message>
+</context>
+<context>
<name>QNetworkAccessDebugPipeBackend</name>
<message>
<location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+195"/>
<source>Write error writing to %1: %2</source>
<translation>Ошибка записи в %1: %2</translation>
</message>
+ <message>
+ <location line="+60"/>
+ <source>Socket error on %1: %2</source>
+ <translation>Ошика сокета для %1: %2</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Remote host closed the connection prematurely on %1</source>
+ <translation>Удалённый узел неожиданно прервал соединение для %1</translation>
+ </message>
</context>
<context>
<name>QNetworkAccessFileBackend</name>
@@ -3719,48 +4908,123 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+599"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+652"/>
<source>No suitable proxy found</source>
<translation>Подходящий прокси-сервер не найден</translation>
</message>
</context>
<context>
+ <name>QNetworkAccessManager</name>
+ <message>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+942"/>
+ <source>Network access is disabled.</source>
+ <translation>Доступ в сеть отключён.</translation>
+ </message>
+</context>
+<context>
<name>QNetworkReply</name>
<message>
- <location line="+101"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+100"/>
<source>Error downloading %1 - server replied: %2</source>
<translation>Ошибка загрузки %1 - ответ сервера: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+80"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="-860"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>Неизвестный протокол &quot;%1&quot;</translation>
</message>
+ <message>
+ <location line="+192"/>
+ <source>Network session error.</source>
+ <translation>Ошибка сетевой сессии.</translation>
+ </message>
+ <message>
+ <location line="+352"/>
+ <source>Temporary network failure.</source>
+ <translation>Временная ошибка сети.</translation>
+ </message>
</context>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+525"/>
+ <location line="+120"/>
<location line="+28"/>
<source>Operation canceled</source>
<translation>Операция отменена</translation>
</message>
</context>
<context>
- <name>QOCIDriver</name>
+ <name>QNetworkSession</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2083"/>
- <source>Unable to logon</source>
- <translation>Невозможно авторизоваться</translation>
+ <location filename="../src/network/bearer/qnetworksession.cpp" line="+449"/>
+ <source>Invalid configuration.</source>
+ <translation>Некорректная конфигурация.</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkSessionPrivateImpl</name>
+ <message>
+ <location filename="../src/plugins/bearer/icd/qnetworksession_impl.cpp" line="+1005"/>
+ <source>Roaming error</source>
+ <translatorcomment>или перемещения?</translatorcomment>
+ <translation type="unfinished">Ошибка роуминга</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Session aborted by user or system</source>
+ <translation>Сессия прервана пользователем или системой</translation>
</message>
<message>
- <location line="-144"/>
+ <location line="+4"/>
+ <source>Unidentified Error</source>
+ <translation>Неопределённая ошибка</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/bearer/qnetworksession_impl.cpp" line="+272"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+280"/>
+ <source>Unknown session error.</source>
+ <translation>Неизвестная ошибка сессии.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The session was aborted by the user or system.</source>
+ <translation>Сессия была прервана пользователем или системой.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The requested operation is not supported by the system.</source>
+ <translation>Требуемая операция не поддерживается системой.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The specified configuration cannot be used.</source>
+ <translation>Невозможно использовать указанную конфигурацию.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>Roaming was aborted or is not possible.</source>
+ <translation type="unfinished">Роуминг прерван или невозможен.</translation>
+ </message>
+</context>
+<context>
+ <name>QOCIDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+1944"/>
<source>Unable to initialize</source>
<comment>QOCIDriver</comment>
<translation>Невозможно инициализировать</translation>
</message>
<message>
- <location line="+215"/>
+ <location line="+144"/>
+ <source>Unable to logon</source>
+ <translation>Невозможно авторизоваться</translation>
+ </message>
+ <message>
+ <location line="+71"/>
<source>Unable to begin transaction</source>
<translation>Невозможно начать транзакцию</translation>
</message>
@@ -3823,12 +5087,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1806"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1888"/>
<source>Unable to connect</source>
<translation>Невозможно соединиться</translation>
</message>
<message>
- <location line="+238"/>
+ <location line="+269"/>
<source>Unable to disable autocommit</source>
<translation>Невозможно отключить автозавершение транзакций</translation>
</message>
@@ -3848,7 +5112,7 @@ Do you want to delete it anyway?</source>
<translation>Невозможно включить автозавершение транзакций</translation>
</message>
<message>
- <location line="-281"/>
+ <location line="-312"/>
<source>Unable to connect - Driver doesn&apos;t support all functionality required</source>
<translation>Невозможно соединиться - Драйвер не поддерживает требуемый функционал</translation>
</message>
@@ -3856,19 +5120,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-937"/>
+ <location line="-941"/>
<location line="+351"/>
<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>
+ <translation>QODBCResult::reset: Невозможно установить &quot;SQL_CURSOR_STATIC&quot; атрибутом выражение. Проверьте настройки драйвера ODBC</translation>
</message>
<message>
<location line="-334"/>
- <location line="+628"/>
+ <location line="+627"/>
<source>Unable to execute statement</source>
<translation>Невозможно выполнить выражение</translation>
</message>
<message>
- <location line="-547"/>
+ <location line="-546"/>
<source>Unable to fetch next</source>
<translation>Невозможно получить следующую строку</translation>
</message>
@@ -3878,19 +5142,19 @@ Do you want to delete it anyway?</source>
<translation>Невозможно подготовить выражение</translation>
</message>
<message>
- <location line="+268"/>
+ <location line="+267"/>
<source>Unable to bind variable</source>
<translation>Невозможно привязать значение</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+189"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-467"/>
- <location line="+576"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-466"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation>Невозможно получить последнюю строку</translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-670"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation>Невозможно получить данные</translation>
</message>
@@ -3908,41 +5172,27 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="-97"/>
- <source>Invalid hostname</source>
- <translation>Некорректное имя узла</translation>
- </message>
- <message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
- <source>Operation not supported on %1</source>
- <translation>Операция не поддерживается для %1</translation>
- </message>
- <message>
- <location line="+57"/>
- <source>Invalid URI: %1</source>
- <translation>Некорректный URI: %1</translation>
- </message>
- <message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+60"/>
- <source>Socket error on %1: %2</source>
- <translation>Ошика сокета для %1: %2</translation>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="-241"/>
+ <source>&quot;%1&quot; duplicates a previous role name and will be disabled.</source>
+ <translation>&quot;%1&quot; повторяет имя предыдущей роли и не будет использовано.</translation>
</message>
<message>
- <location line="+15"/>
- <source>Remote host closed the connection prematurely on %1</source>
- <translation>Удалённый узел неожиданно прервал соединение для %1</translation>
+ <location line="+515"/>
+ <location line="+4"/>
+ <source>invalid query: &quot;%1&quot;</source>
+ <translation>Некорректный запрос: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+168"/>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+0"/>
- <source>No host name given</source>
- <translation>Имя узла не задано</translation>
+ <location filename="../src/3rdparty/phonon/phonon/pulsesupport.cpp" line="+162"/>
+ <location line="+11"/>
+ <source>PulseAudio Sound Server</source>
+ <translation>Звуковой сервер PulseAudio</translation>
</message>
</context>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1197"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1238"/>
<source>Name</source>
<translation>Имя</translation>
</message>
@@ -4134,7 +5384,22 @@ Do you want to delete it anyway?</source>
<translation>неизвестно</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+272"/>
+ <source>OK</source>
+ <translation>Закрыть</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+379"/>
+ <source>Print all</source>
+ <translation>Все страницы</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Print range</source>
+ <translation>Диапазон страниц</translation>
+ </message>
+ <message>
+ <location line="-48"/>
<source>A0 (841 x 1189 mm)</source>
<translation>A0 (841 x 1189 мм)</translation>
</message>
@@ -4154,12 +5419,7 @@ Do you want to delete it anyway?</source>
<translation>A3 (297 x 420 мм)</translation>
</message>
<message>
- <location line="+1"/>
- <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
- <translation>A4 (210 x 297 мм, 8.26 x 11.7 дюймов)</translation>
- </message>
- <message>
- <location line="+1"/>
+ <location line="+2"/>
<source>A5 (148 x 210 mm)</source>
<translation>A5 (148 x 210 мм)</translation>
</message>
@@ -4209,12 +5469,7 @@ Do you want to delete it anyway?</source>
<translation>B4 (250 x 353 мм)</translation>
</message>
<message>
- <location line="+1"/>
- <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
- <translation>B5 (176 x 250 мм, 6.93 x 9.84 дюймов)</translation>
- </message>
- <message>
- <location line="+1"/>
+ <location line="+2"/>
<source>B6 (125 x 176 mm)</source>
<translation>B6 (125 x 176 мм)</translation>
</message>
@@ -4249,12 +5504,7 @@ Do you want to delete it anyway?</source>
<translation>DLE (110 x 220 мм)</translation>
</message>
<message>
- <location line="+1"/>
- <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
- <translation>Executive (191 x 254 мм, 7.5 x 10 дюймов)</translation>
- </message>
- <message>
- <location line="+1"/>
+ <location line="+2"/>
<source>Folio (210 x 330 mm)</source>
<translation>Folio (210 x 330 мм)</translation>
</message>
@@ -4264,54 +5514,64 @@ Do you want to delete it anyway?</source>
<translation>Ledger (432 x 279 мм)</translation>
</message>
<message>
- <location line="+1"/>
- <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
- <translation>Legal (216 x 356 мм, 8.5 x 14 дюймов)</translation>
+ <location line="+3"/>
+ <source>Tabloid (279 x 432 mm)</source>
+ <translation>Tabloid (279 x 432 мм)</translation>
</message>
<message>
<location line="+1"/>
- <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
- <translation>Letter (216 x 279 мм, 8.5 x 11 дюймов)</translation>
+ <source>US Common #10 Envelope (105 x 241 mm)</source>
+ <translation>Конверт US #10 (105x241 мм)</translation>
</message>
<message>
- <location line="+1"/>
- <source>Tabloid (279 x 432 mm)</source>
- <translation>Tabloid (279 x 432 мм)</translation>
+ <location line="+20"/>
+ <source>Print current page</source>
+ <translation>Текущая страница</translation>
+ </message>
+ <message>
+ <location line="-45"/>
+ <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
+ <translation>A4 (210 x 297 мм, 8.26 x 11.7 дюймов)</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
+ <translation>B5 (176 x 250 мм, 6.93 x 9.84 дюймов)</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
+ <translation>Executive (191 x 254 мм, 7.5 x 10 дюймов)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
+ <translation>Legal (216 x 356 мм, 8.5 x 14 дюймов)</translation>
</message>
<message>
<location line="+1"/>
- <source>US Common #10 Envelope (105 x 241 mm)</source>
- <translation>Конверт US #10 (105x241 мм)</translation>
+ <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
+ <translation>Letter (216 x 279 мм, 8.5 x 11 дюймов)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+266"/>
- <source>OK</source>
- <translation>Закрыть</translation>
+ <location line="+20"/>
+ <source>Print selection</source>
+ <translation>Выделенный фрагмент</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+112"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+113"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
<translation>Печать</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-359"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-392"/>
<source>Print To File ...</source>
<translation>Печать в файл ...</translation>
</message>
<message>
- <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>
- <message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+82"/>
+ <location line="+82"/>
<source>File %1 is not writable.
Please choose a different file name.</source>
<translation>%1 недоступен для записи.
@@ -4325,7 +5585,7 @@ Do you want to overwrite it?</source>
Хотите заменить его?</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-227"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-232"/>
<source>File exists</source>
<translation>Файл существует</translation>
</message>
@@ -4335,11 +5595,6 @@ Do you want to overwrite it?</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>
@@ -4347,6 +5602,11 @@ Please choose a different file name.</source>
Выберите другое имя файла.</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>Значение &quot;с&quot; не может быть больше значения &quot;по&quot;.</translation>
+ </message>
+ <message>
<location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-232"/>
<source>A0</source>
<translation>A0</translation>
@@ -4502,23 +5762,18 @@ Please choose a different file name.</source>
<translation>Пользовательский</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-523"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-530"/>
<location line="+68"/>
<source>&amp;Options &gt;&gt;</source>
<translation>&amp;Параметры &gt;&gt;</translation>
</message>
<message>
- <location line="-63"/>
- <source>&amp;Print</source>
- <translation>&amp;Печать</translation>
- </message>
- <message>
- <location line="+67"/>
+ <location line="+4"/>
<source>&amp;Options &lt;&lt;</source>
<translation>&amp;Параметры &lt;&lt;</translation>
</message>
<message>
- <location line="+253"/>
+ <location line="+260"/>
<source>Print to File (PDF)</source>
<translation>Печать в файл (PDF)</translation>
</message>
@@ -4538,26 +5793,20 @@ Please choose a different file name.</source>
<translation>Запись %1 файла</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>Значение &apos;от&apos; не может быть больше значения &apos;до&apos;.</translation>
+ <location line="-376"/>
+ <source>&amp;Print</source>
+ <translation>&amp;Печать</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>Параметры страницы</translation>
- </message>
- <message>
<location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+249"/>
<source>%1%</source>
<translation>%1%</translation>
</message>
<message>
- <location line="+71"/>
+ <location line="+84"/>
<source>Print Preview</source>
<translation>Просмотр печати</translation>
</message>
@@ -4651,6 +5900,12 @@ Please choose a different file name.</source>
<source>Export to PostScript</source>
<translation>Экспорт в Postscript</translation>
</message>
+ <message>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
+ <location line="+12"/>
+ <source>Page Setup</source>
+ <translation>Параметры страницы</translation>
+ </message>
</context>
<context>
<name>QPrintPropertiesWidget</name>
@@ -4695,12 +5950,12 @@ Please choose a different file name.</source>
<message>
<location/>
<source>Pages from</source>
- <translation>Страницы от</translation>
+ <translation>Страницы с</translation>
</message>
<message>
<location/>
<source>to</source>
- <translation>до</translation>
+ <translation>по</translation>
</message>
<message>
<location/>
@@ -4767,6 +6022,11 @@ Please choose a different file name.</source>
<source>Short side</source>
<translation>По короткой стороне</translation>
</message>
+ <message>
+ <location/>
+ <source>Current Page</source>
+ <translation>Текущая страница</translation>
+ </message>
</context>
<context>
<name>QPrintWidget</name>
@@ -4849,7 +6109,7 @@ Please choose a different file name.</source>
<translation>Время на операцию с процессом истекло</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+856"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+866"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -5000,7 +6260,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+538"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+539"/>
<source>Error opening database</source>
<translation>Ошибка открытия базы данных</translation>
</message>
@@ -5028,8 +6288,8 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteResult</name>
<message>
- <location line="-395"/>
- <location line="+62"/>
+ <location line="-396"/>
+ <location line="+63"/>
<location line="+8"/>
<source>Unable to fetch row</source>
<translation>Невозможно получить строку</translation>
@@ -5055,7 +6315,7 @@ Please choose a different file name.</source>
<translation>Количество параметров не совпадает</translation>
</message>
<message>
- <location line="-200"/>
+ <location line="-201"/>
<source>No query</source>
<translation>Отсутствует запрос</translation>
</message>
@@ -5070,7 +6330,7 @@ Please choose a different file name.</source>
<message>
<location line="+2"/>
<source>Location</source>
- <translation>Расположение</translation>
+ <translation>Размещение</translation>
</message>
<message>
<location line="+2"/>
@@ -5286,7 +6546,7 @@ Please choose a different file name.</source>
<context>
<name>QScriptDebuggerLocalsModel</name>
<message>
- <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+872"/>
+ <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+897"/>
<source>Name</source>
<translation>Название</translation>
</message>
@@ -5486,12 +6746,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+223"/>
- <source>%1: unable to set key on lock</source>
- <translation>%1: невозможно установить ключ на блокировку</translation>
- </message>
- <message>
- <location line="+81"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+304"/>
<source>%1: create size is less then 0</source>
<translation>%1: размер меньше нуля</translation>
</message>
@@ -5545,30 +6800,30 @@ Please choose a different file name.</source>
<translation>%1: пустой ключ</translation>
</message>
<message>
- <location line="-31"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-16"/>
- <source>%1: doesn&apos;t exist</source>
- <translation>%1: не существует</translation>
- </message>
- <message>
- <location line="+39"/>
- <source>%1: UNIX key file doesn&apos;t exist</source>
- <translation>%1: специфический ключ UNIX не существует</translation>
- </message>
- <message>
- <location line="+7"/>
+ <location line="+15"/>
<source>%1: ftok failed</source>
<translation>%1: ошибка ftok</translation>
</message>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+56"/>
<location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+51"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+31"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+15"/>
<source>%1: unable to make key</source>
<translation>%1: невозможно создать ключ</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+20"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-97"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-31"/>
+ <source>%1: doesn&apos;t exist</source>
+ <translation>%1: не существует</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>%1: UNIX key file doesn&apos;t exist</source>
+ <translation>%1: специфический ключ UNIX не существует</translation>
+ </message>
+ <message>
+ <location line="+78"/>
<source>%1: system-imposed size restrictions</source>
<translation>%1: системой наложены ограничения на размер</translation>
</message>
@@ -5579,7 +6834,7 @@ Please choose a different file name.</source>
</message>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-67"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-27"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+4"/>
<source>%1: invalid size</source>
<translation>%1: некорректный размер</translation>
</message>
@@ -5594,12 +6849,18 @@ Please choose a different file name.</source>
<source>%1: size query failed</source>
<translation>%1: не удалось запросить размер</translation>
</message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="-271"/>
+ <source>%1: unable to set key on lock</source>
+ <translation>%1: невозможно установить ключ блокировки</translation>
+ </message>
</context>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+393"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+396"/>
<source>Space</source>
+ <extracomment>This and all following &quot;incomprehensible&quot; strings in QShortcut context are key names. Please use the localized names appearing on actual keyboards or whatever is commonly used.</extracomment>
<translation type="unfinished">Пробел</translation>
</message>
<message>
@@ -5775,12 +7036,12 @@ Please choose a different file name.</source>
<message>
<location line="+1"/>
<source>Treble Up</source>
- <translation type="unfinished">Высокие частоты выше</translation>
+ <translation type="unfinished">ВЧ выше</translation>
</message>
<message>
<location line="+1"/>
<source>Treble Down</source>
- <translation type="unfinished">Высокие частоты ниже</translation>
+ <translation type="unfinished">ВЧ ниже</translation>
</message>
<message>
<location line="+1"/>
@@ -5920,32 +7181,32 @@ Please choose a different file name.</source>
<message>
<location line="+1"/>
<source>Monitor Brightness Up</source>
- <translation type="unfinished">Яркость монитора выше</translation>
+ <translation type="unfinished">Увеличить яркость монитора</translation>
</message>
<message>
<location line="+1"/>
<source>Monitor Brightness Down</source>
- <translation type="unfinished">Яркость монитора ниже</translation>
+ <translation type="unfinished">Уменьшить яркость монитора</translation>
</message>
<message>
<location line="+1"/>
<source>Keyboard Light On/Off</source>
- <translation type="unfinished">Вкл/выкл подсветку клавиатуры</translation>
+ <translation type="unfinished">Вкл./Откл. подсветку клавиатуры</translation>
</message>
<message>
<location line="+1"/>
<source>Keyboard Brightness Up</source>
- <translation type="unfinished">Подсветка клавиатуры ярче</translation>
+ <translation type="unfinished">Увеличить яркость подсветки клавиатуры</translation>
</message>
<message>
<location line="+1"/>
<source>Keyboard Brightness Down</source>
- <translation type="unfinished">Подсветка клавиатуры бледнее</translation>
+ <translation type="unfinished">Уменьшить яркость подсветки клавиатуры</translation>
</message>
<message>
<location line="+1"/>
<source>Power Off</source>
- <translation type="unfinished">Выключение питания</translation>
+ <translation type="unfinished">Отключение питания</translation>
</message>
<message>
<location line="+1"/>
@@ -5955,12 +7216,12 @@ Please choose a different file name.</source>
<message>
<location line="+1"/>
<source>Eject</source>
- <translation type="unfinished">Извлечение</translation>
+ <translation type="unfinished">Извлечь</translation>
</message>
<message>
<location line="+1"/>
<source>Screensaver</source>
- <translation type="unfinished">Хранитель экрана</translation>
+ <translation type="unfinished">Экранная заставка</translation>
</message>
<message>
<location line="+1"/>
@@ -5970,13 +7231,12 @@ Please choose a different file name.</source>
<message>
<location line="+1"/>
<source>Sleep</source>
- <translation type="unfinished">Засыпание</translation>
+ <translation type="unfinished">Спящий режим</translation>
</message>
<message>
<location line="+1"/>
<source>LightBulb</source>
- <translatorcomment>лампочка?</translatorcomment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Лампочка</translation>
</message>
<message>
<location line="+1"/>
@@ -6016,7 +7276,7 @@ Please choose a different file name.</source>
<message>
<location line="+1"/>
<source>Audio Rewind</source>
- <translation type="unfinished">Перемотка</translation>
+ <translation type="unfinished">Перемотка аудио назад</translation>
</message>
<message>
<location line="+1"/>
@@ -6419,7 +7679,157 @@ Please choose a different file name.</source>
<translation type="unfinished">Системный запрос</translation>
</message>
<message>
- <location line="-18"/>
+ <location line="+20"/>
+ <source>Kanji</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Muhenkan</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Henkan</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Romaji</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hiragana</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Katakana</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hiragana Katakana</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zenkaku</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hankaku</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zenkaku Hankaku</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Touroku</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Massyo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Kana Lock</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Kana Shift</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Eisu Shift</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Eisu toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Code input</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Multiple Candidate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Previous Candidate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Hangul</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Hanja</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Jamo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Romaja</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Jeonja</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Banja</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul PreHanja</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul PostHanja</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Special</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-70"/>
<location line="+22"/>
<source>Select</source>
<translation type="unfinished">Выбрать</translation>
@@ -6470,7 +7880,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+638"/>
<location line="+135"/>
<source>Ctrl</source>
<translation type="unfinished">Ctrl</translation>
@@ -6504,7 +7914,7 @@ Please choose a different file name.</source>
<translation type="unfinished">F%1</translation>
</message>
<message>
- <location line="-871"/>
+ <location line="-934"/>
<source>Home Page</source>
<translation type="unfinished">Домашняя страница</translation>
</message>
@@ -6638,7 +8048,7 @@ Please choose a different file name.</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qsoftkeymanager_s60.cpp" line="+322"/>
+ <location filename="../src/gui/kernel/qsoftkeymanager_s60.cpp" line="+321"/>
<source>Exit</source>
<translation>Выход</translation>
</message>
@@ -6716,7 +8126,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+546"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+550"/>
<source>Unable to write data: %1</source>
<translation>Невозможно записать данные: %1</translation>
</message>
@@ -6736,17 +8146,17 @@ Please choose a different file name.</source>
<translation>Ошибка квитирования SSL: %1</translation>
</message>
<message>
- <location line="-521"/>
+ <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>
+ <translation>Некорректный или пустой список шифров (%1)</translation>
</message>
<message>
- <location line="+42"/>
+ <location line="+45"/>
<source>Private key does not certify public key, %1</source>
<translation>Закрытый ключ не соответствует открытому ключу, %1</translation>
</message>
@@ -6761,7 +8171,7 @@ Please choose a different file name.</source>
<translation>Ошибка создания сессии SSL: %1</translation>
</message>
<message>
- <location line="-61"/>
+ <location line="-64"/>
<source>Cannot provide a certificate with no key, %1</source>
<translation>Невозможно предоставить сертификат без ключа, %1</translation>
</message>
@@ -6771,7 +8181,7 @@ Please choose a different file name.</source>
<translation>Ошибка загрузки локального сертификата, %1</translation>
</message>
<message>
- <location line="+12"/>
+ <location line="+15"/>
<source>Error loading private key, %1</source>
<translation>Ошибка загрузки закрытого ключа, %1</translation>
</message>
@@ -6783,8 +8193,7 @@ Please choose a different file name.</source>
<message>
<location line="+3"/>
<source>The issuer certificate could not be found</source>
- <translatorcomment>издателя ?</translatorcomment>
- <translation type="unfinished">Не удалось найти сертификат запрашивающей стороны</translation>
+ <translation>Не удалось найти сертификат издателя</translation>
</message>
<message>
<location line="+3"/>
@@ -6814,27 +8223,27 @@ Please choose a different file name.</source>
<message>
<location line="+3"/>
<source>The certificate&apos;s notBefore field contains an invalid time</source>
- <translation>Поле сертификата notBefore содержит некорректное время</translation>
+ <translation>Поле notBefore сертификата содержит некорректное время</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate&apos;s notAfter field contains an invalid time</source>
- <translation>Поле сертификата notAfter содержит некорректное время</translation>
+ <translation>Поле notAfter сертификата содержит некорректное время</translation>
</message>
<message>
<location line="+3"/>
<source>The certificate is self-signed, and untrusted</source>
- <translation type="unfinished">Самоподписанный сертификат не является заверенным</translation>
+ <translation>Сертификат самоподписанный и не является заверенным</translation>
</message>
<message>
<location line="+3"/>
<source>The root certificate of the certificate chain is self-signed, and untrusted</source>
- <translation type="unfinished">Корневой сертификат цепочки сертификатов самоподписанный и не является заверенным</translation>
+ <translation>Корневой сертификат цепочки сертификатов самоподписанный и не является заверенным</translation>
</message>
<message>
<location line="+3"/>
<source>The issuer certificate of a locally looked up certificate could not be found</source>
- <translation type="unfinished"></translation>
+ <translation>Не удалось найти сертификат издателя локального сертификата</translation>
</message>
<message>
<location line="+3"/>
@@ -6844,47 +8253,47 @@ Please choose a different file name.</source>
<message>
<location line="+3"/>
<source>One of the CA certificates is invalid</source>
- <translation>Один из CA сертификатов некорректный</translation>
+ <translation>Один из сертификатов центра сертификации некорректен</translation>
</message>
<message>
<location line="+3"/>
<source>The basicConstraints path length parameter has been exceeded</source>
- <translation type="unfinished">Путь параметра basicConstraints слишком длинный</translation>
+ <translation>Превышено значение параметра длины пути поля basicConstraints сертификата</translation>
</message>
<message>
<location line="+3"/>
<source>The supplied certificate is unsuitable for this purpose</source>
- <translation type="unfinished">Представленный сертификат не предназначен для данного использования</translation>
+ <translation>Представленный сертификат непригоден для данной цели</translation>
</message>
<message>
<location line="+3"/>
<source>The root CA certificate is not trusted for this purpose</source>
- <translation type="unfinished">Корневой CA сертификат не является заверенным для данного использования</translation>
+ <translation>Корневой сертификат центра сертификации не является заверенным для данной цели</translation>
</message>
<message>
<location line="+3"/>
<source>The root CA certificate is marked to reject the specified purpose</source>
- <translation type="unfinished">Корневой CA сертификат отмечен как &apos;отказывать&apos; для данного использования</translation>
+ <translation>Корневой сертификат центра сертификации отмечен на отклонение для данной цели</translation>
</message>
<message>
<location line="+3"/>
<source>The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate</source>
- <translation type="unfinished"></translation>
+ <translation>Текущий сертификат издателя был отклонён, так как название темы не совпадает с названием издателя сертификата</translation>
</message>
<message>
<location line="+4"/>
<source>The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate</source>
- <translation type="unfinished"></translation>
+ <translation>Текущий сертификат издателя был отклонён, так как название издателя и серийный номер не совпадают с идентификатором ключа сертификата</translation>
</message>
<message>
<location line="+5"/>
<source>The peer did not present any certificate</source>
- <translation>Узел не предоставил сертификат</translation>
+ <translation>Сертификат не был предоставлен</translation>
</message>
<message>
<location line="+3"/>
<source>The host name did not match any of the valid hosts for this certificate</source>
- <translation>Название узла не совпадает ни с одним из допустимых узлов данного сертификата</translation>
+ <translation>Название узла не совпадает с допустимыми названиями узлов сертификата</translation>
</message>
<message>
<location line="+6"/>
@@ -6897,17 +8306,17 @@ Please choose a different file name.</source>
<message>
<location filename="../src/corelib/statemachine/qstatemachine.cpp" line="+1028"/>
<source>Missing initial state in compound state &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>Отсутствует исходное состояние в составном состоянии &quot;%1&quot;</translation>
</message>
<message>
<location line="+7"/>
<source>Missing default state in history state &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>Отсутствует состояние по умолчанию в историческом состоянии &quot;%1&quot;</translation>
</message>
<message>
<location line="+7"/>
<source>No common ancestor for targets and source of transition from state &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>Нет общего предка у источника и цели перехода из состояния &quot;%1&quot;</translation>
</message>
<message>
<location line="+4"/>
@@ -6918,7 +8327,12 @@ Please choose a different file name.</source>
<context>
<name>QSystemSemaphore</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-46"/>
+ <source>%1: does not exist</source>
+ <translation>%1: не существует</translation>
+ </message>
+ <message>
+ <location line="+5"/>
<location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation>%1: недостаточно ресурсов</translation>
@@ -6935,12 +8349,7 @@ Please choose a different file name.</source>
<translation>%1: уже существует</translation>
</message>
<message>
- <location line="+4"/>
- <source>%1: does not exist</source>
- <translation>%1: не существует</translation>
- </message>
- <message>
- <location line="+9"/>
+ <location line="+13"/>
<location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+3"/>
<source>%1: unknown error %2</source>
<translation>%1: неизвестная ошибка %2</translation>
@@ -6975,7 +8384,7 @@ Please choose a different file name.</source>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+292"/>
<source>Operation on socket is not supported</source>
<translation>Операция с сокетом не поддерживается</translation>
</message>
@@ -6983,7 +8392,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+2027"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+2046"/>
<source>&amp;Undo</source>
<translation>&amp;Отменить действие</translation>
</message>
@@ -7041,7 +8450,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+179"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+189"/>
<source>This platform does not support IPv6</source>
<translation>Данная платформа не поддерживает IPv6</translation>
</message>
@@ -7085,52 +8494,52 @@ Please choose a different file name.</source>
<message>
<location filename="../src/gui/text/qtextcontrol.cpp" line="+899"/>
<source>LRM Left-to-right mark</source>
- <translation type="unfinished">LRM Индикатор написания слева направо</translation>
+ <translation>LRM Признак написания слева направо</translation>
</message>
<message>
<location line="+1"/>
<source>RLM Right-to-left mark</source>
- <translation type="unfinished">RLM Индикатор написания справа налево</translation>
+ <translation>RLM Признак написания справа налево</translation>
</message>
<message>
<location line="+1"/>
<source>ZWJ Zero width joiner</source>
- <translation type="unfinished">ZWJ Объединяющий символ нулевой ширины</translation>
+ <translation>ZWJ Объединяющий символ нулевой ширины</translation>
</message>
<message>
<location line="+1"/>
<source>ZWNJ Zero width non-joiner</source>
- <translation type="unfinished">ZWNJ Разделитель нулевой ширины</translation>
+ <translation>ZWNJ Необъединяющий символ нулевой ширины</translation>
</message>
<message>
<location line="+1"/>
<source>ZWSP Zero width space</source>
- <translation type="unfinished">ZWSP Пробел нулевой ширины</translation>
+ <translation>ZWSP Пробел нулевой ширины</translation>
</message>
<message>
<location line="+1"/>
<source>LRE Start of left-to-right embedding</source>
- <translation type="unfinished">LRE Индикатор написания слева направо внутри текста, написанного справа налево</translation>
+ <translation>LRE Начало встраивания написания слева направо</translation>
</message>
<message>
<location line="+1"/>
<source>RLE Start of right-to-left embedding</source>
- <translation type="unfinished">RLE Индикатор написания справа налево внутри текста, написанного слева направо</translation>
+ <translation>LRE Начало встраивания написания справа налево</translation>
</message>
<message>
<location line="+1"/>
<source>LRO Start of left-to-right override</source>
- <translation type="unfinished">LRO Перекрывающий индикатор написания слева направо</translation>
+ <translation>LRO Начало замены написания слева направо</translation>
</message>
<message>
<location line="+1"/>
<source>RLO Start of right-to-left override</source>
- <translation type="unfinished">RLO Перекрывающий индикатор написания справа налево</translation>
+ <translation>RLO Начало замены написания справа налево</translation>
</message>
<message>
<location line="+1"/>
<source>PDF Pop directional formatting</source>
- <translation type="unfinished">PDF Индикатор конца текста с другим направлением</translation>
+ <translation>PDF Признак окончания написания с другим направлением</translation>
</message>
<message>
<location line="+6"/>
@@ -7141,7 +8550,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+712"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+753"/>
<source>Request cancelled</source>
<translation>Запрос отменён</translation>
</message>
@@ -7174,12 +8583,322 @@ Please choose a different file name.</source>
<context>
<name>QWebPage</name>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+416"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+248"/>
+ <source>Web Inspector - %2</source>
+ <translation>Web-инспектор - %2</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+347"/>
+ <source>Redirection limit reached</source>
+ <translation>Достигнут предел переадресации</translation>
+ </message>
+ <message>
+ <location line="+121"/>
<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/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>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1979"/>
+ <source>JavaScript Alert - %1</source>
+ <translation>JavaScript: Предупреждение - %1</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>JavaScript Confirm - %1</source>
+ <translation>JavaScript: Подтверждение - %1</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>JavaScript Prompt - %1</source>
+ <translation>JavaScript: Запрос - %1</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>JavaScript Problem - %1</source>
+ <translation>JavaScript: Проблема - %1</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>The script on this page appears to have a problem. Do you want to stop the script?</source>
+ <translation>Сбой выполнения сценария на данной странице. Желаете остановить выполение сценария?</translation>
+ </message>
+ <message>
+ <location line="+376"/>
+ <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>Выделить всё</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>Вставить новый параграф</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation>Вставить новую строку</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Paste and Match Style</source>
+ <translation>Вставить, сохранив стиль</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Remove formatting</source>
+ <translation>Удалить форматирование</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Strikethrough</source>
+ <translation>Зачёркнутый</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Subscript</source>
+ <translation>Подстрочный</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Superscript</source>
+ <translation>Надстрочный</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Insert Bulleted List</source>
+ <translation>Вставить маркированный список</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Insert Numbered List</source>
+ <translation>Вставить нумерованный список</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Indent</source>
+ <translation>Увеличить отступ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Outdent</source>
+ <translation>Уменьшить отступ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Center</source>
+ <translation>По центру</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Justify</source>
+ <translation>По ширине</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Align Left</source>
+ <translation>По левому краю</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Align Right</source>
+ <translation>По правому краю</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+44"/>
<source>Submit</source>
<comment>default label for Submit buttons in forms on web pages</comment>
<translation>Отправить</translation>
@@ -7302,7 +9021,7 @@ Please choose a different file name.</source>
<location line="+5"/>
<source>No Guesses Found</source>
<comment>No Guesses Found context menu item</comment>
- <translation type="unfinished">Неверное слово</translation>
+ <translation type="unfinished">Совпадений не найдено</translation>
</message>
<message>
<location line="+5"/>
@@ -7439,7 +9158,49 @@ Please choose a different file name.</source>
<translation>Справа налево</translation>
</message>
<message>
- <location line="+105"/>
+ <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="+80"/>
+ <source>Missing Plug-in</source>
+ <comment>Label text to be used when a plug-in is missing</comment>
+ <translation>Модуль отсутствует</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <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 px)</translation>
+ </message>
+ <message>
+ <location line="+5"/>
<source>Loading...</source>
<comment>Media controller status message when the media is loading</comment>
<translation>Загрузка...</translation>
@@ -7454,121 +9215,121 @@ Please choose a different file name.</source>
<location line="+8"/>
<source>Audio Element</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Аудио-элемент</translation>
+ <translation>Аудио-элемент</translation>
</message>
<message>
<location line="+2"/>
<source>Video Element</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Видео-элемент</translation>
+ <translation>Видео-элемент</translation>
</message>
<message>
<location line="+2"/>
<source>Mute Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Кнопка &quot;приглушить&quot;</translation>
+ <translation>Кнопка &quot;Отключить звук&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Unmute Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished"></translation>
+ <translation>Кнопка &quot;Включить звук&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Play Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Кнопка &quot;воспроизведение&quot;</translation>
+ <translation>Кнопка &quot;Воспроизведение&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Pause Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Кнопка &quot;пауза&quot;</translation>
+ <translation>Кнопка &quot;Пауза&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Slider</source>
<comment>Media controller element</comment>
- <translation type="unfinished"></translation>
+ <translation>Регулятор</translation>
</message>
<message>
<location line="+2"/>
<source>Slider Thumb</source>
<comment>Media controller element</comment>
- <translation type="unfinished"></translation>
+ <translation>Указатель регулятора</translation>
</message>
<message>
<location line="+2"/>
<source>Rewind Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Кнопка &quot;перемотать&quot;</translation>
+ <translation>Кнопка &quot;Перемотка назад&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Return to Real-time Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Кнопка &quot;Вернуть в реальное время&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Elapsed Time</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Прошло времени</translation>
+ <translation>Прошло времени</translation>
</message>
<message>
<location line="+2"/>
<source>Remaining Time</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Осталось времени</translation>
+ <translation>Осталось времени</translation>
</message>
<message>
<location line="+2"/>
<source>Status Display</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Отображение состояния</translation>
+ <translation>Отображение состояния</translation>
</message>
<message>
<location line="+2"/>
<source>Fullscreen Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Кнопка &quot;полноэкранный режим&quot;</translation>
+ <translation>Кнопка &quot;На весь экран&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Seek Forward Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Кнопка &quot;перемотка вперёд&quot;</translation>
+ <translation>Кнопка &quot;Перемотка вперёд&quot;</translation>
</message>
<message>
<location line="+2"/>
<source>Seek Back Button</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Кнопка &quot;перемотка назад&quot;</translation>
+ <translation>Кнопка &quot;Перемотка назад&quot;</translation>
</message>
<message>
<location line="+8"/>
<source>Audio element playback controls and status display</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Элементы управления воспроизведением звука и отображения состояния</translation>
+ <translation>Элементы управления воспроизведением звука и отображением состояния</translation>
</message>
<message>
<location line="+2"/>
<source>Video element playback controls and status display</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Элементы управления воспроизведением видео и отображения состояния</translation>
+ <translation>Элементы управления воспроизведением видео и отображением состояния</translation>
</message>
<message>
<location line="+2"/>
<source>Mute audio tracks</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Выключить звуковые дорожки</translation>
+ <translation>Отключить звуковые дорожки</translation>
</message>
<message>
<location line="+2"/>
<source>Unmute audio tracks</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Включить звуковые дорожки</translation>
+ <translation>Включить звуковые дорожки</translation>
</message>
<message>
<location line="+2"/>
@@ -7586,67 +9347,67 @@ Please choose a different file name.</source>
<location line="+2"/>
<source>Movie time scrubber</source>
<comment>Media controller element</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Перемотка</translation>
</message>
<message>
<location line="+2"/>
<source>Movie time scrubber thumb</source>
<comment>Media controller element</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Позиция перемотки</translation>
</message>
<message>
<location line="+2"/>
<source>Rewind movie</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Начать фильм сначала</translation>
+ <translation>Перемотка в начало</translation>
</message>
<message>
<location line="+2"/>
<source>Return streaming movie to real-time</source>
<comment>Media controller element</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Возвращает потоковое видео к воспроизведению в реальном времени</translation>
</message>
<message>
<location line="+2"/>
<source>Current movie time</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Текущее время фильма</translation>
+ <translation>Текущее время фильма</translation>
</message>
<message>
<location line="+2"/>
<source>Remaining movie time</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Осталось времени фильма</translation>
+ <translation>Оставшееся время фильма</translation>
</message>
<message>
<location line="+2"/>
<source>Current movie status</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Текущее состояние фильма</translation>
+ <translation>Текущее состояние фильма</translation>
</message>
<message>
<location line="+2"/>
<source>Play movie in full-screen mode</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Воспроизводить фильм в полноэкранном режиме</translation>
+ <translation>Воспроизведение фильма в режиме отображения на весь экран</translation>
</message>
<message>
<location line="+2"/>
<source>Seek quickly back</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Быстрая перемотка назад</translation>
+ <translation>Быстрая перемотка назад</translation>
</message>
<message>
<location line="+2"/>
<source>Seek quickly forward</source>
<comment>Media controller element</comment>
- <translation type="unfinished">Быстрая перемотка вперёд</translation>
+ <translation>Быстрая перемотка вперёд</translation>
</message>
<message>
<location line="+9"/>
<source>Indefinite time</source>
<comment>Media time description</comment>
- <translation type="unfinished">Время не определено</translation>
+ <translation>Время не определено</translation>
</message>
<message>
<location line="+9"/>
@@ -7672,112 +9433,6 @@ Please choose a different file name.</source>
<comment>Media time description</comment>
<translation>%1 секунд</translation>
</message>
- <message>
- <location line="-210"/>
- <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 px)</translation>
- </message>
- <message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+167"/>
- <source>Web Inspector - %2</source>
- <translation>Web-инспектор - %2</translation>
- </message>
- <message>
- <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"/>
<source>%n file(s)</source>
@@ -7788,241 +9443,6 @@ Please choose a different file name.</source>
<numerusform>%n файлов</numerusform>
</translation>
</message>
- <message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1833"/>
- <source>JavaScript Alert - %1</source>
- <translation>JavaScript: Предупреждение - %1</translation>
- </message>
- <message>
- <location line="+16"/>
- <source>JavaScript Confirm - %1</source>
- <translation>JavaScript: Подтверждение - %1</translation>
- </message>
- <message>
- <location line="+19"/>
- <source>JavaScript Prompt - %1</source>
- <translation>JavaScript: Запрос - %1</translation>
- </message>
- <message>
- <location line="+25"/>
- <source>JavaScript Problem - %1</source>
- <translation>JavaScript: Проблема - %1</translation>
- </message>
- <message>
- <location line="+0"/>
- <source>The script on this page appears to have a problem. Do you want to stop the script?</source>
- <translation>Сбой выполнения сценария на данной странице. Желаете остановить выполение сценария?</translation>
- </message>
- <message>
- <location line="+381"/>
- <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>Выделить всё</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>Вставить новый параграф</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Insert a new line</source>
- <translation>Вставить новую строку</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Paste and Match Style</source>
- <translation>Вставить, сохранив стиль</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Remove formatting</source>
- <translation>Удалить форматирование</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Strikethrough</source>
- <translation>Зачёркнутый</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Subscript</source>
- <translation>Подстрочный</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Superscript</source>
- <translation>Надстрочный</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Insert Bulleted List</source>
- <translation>Вставить маркированный список</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Insert Numbered List</source>
- <translation>Вставить нумерованный список</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Indent</source>
- <translation>Увеличить отступ</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Outdent</source>
- <translation>Уменьшить отступ</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Center</source>
- <translation>По центру</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Justify</source>
- <translation>По ширине</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Align Left</source>
- <translation>По левому краю</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Align Right</source>
- <translation>По правому краю</translation>
- </message>
</context>
<context>
<name>QWhatsThisAction</name>
@@ -8035,7 +9455,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5757"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5802"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -8043,27 +9463,12 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+649"/>
- <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>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+701"/>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
</message>
<message>
<location line="+2"/>
- <source>Done</source>
- <translation>Готово</translation>
- </message>
- <message>
- <location line="+4"/>
<source>Help</source>
<translation>Справка</translation>
</message>
@@ -8078,17 +9483,32 @@ Please choose a different file name.</source>
<translation>&amp;Завершить</translation>
</message>
<message>
- <location line="+2"/>
- <source>Cancel</source>
- <translation>Отмена</translation>
+ <location line="+4"/>
+ <source>&amp;Help</source>
+ <translation>&amp;Справка</translation>
+ </message>
+ <message>
+ <location line="-14"/>
+ <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>&amp;Help</source>
- <translation>&amp;Справка</translation>
+ <source>Done</source>
+ <translation>Готово</translation>
</message>
<message>
- <location line="-8"/>
+ <location line="-4"/>
<source>&amp;Next</source>
<translation>&amp;Далее</translation>
</message>
@@ -8136,19 +9556,7 @@ Please choose a different file name.</source>
<translation>Оставаться &amp;сверху</translation>
</message>
<message>
- <location line="+3"/>
- <location line="+1059"/>
- <source>Sh&amp;ade</source>
- <translation>Св&amp;ернуть в заголовок</translation>
- </message>
- <message>
- <location line="-278"/>
- <location line="+60"/>
- <source>%1 - [%2]</source>
- <translation>%1 - [%2]</translation>
- </message>
- <message>
- <location line="-1832"/>
+ <location line="-988"/>
<source>Minimize</source>
<translation>Свернуть</translation>
</message>
@@ -8163,7 +9571,19 @@ Please choose a different file name.</source>
<translation>Закрыть</translation>
</message>
<message>
- <location line="+2048"/>
+ <location line="+993"/>
+ <location line="+1059"/>
+ <source>Sh&amp;ade</source>
+ <translation>Св&amp;ернуть в заголовок</translation>
+ </message>
+ <message>
+ <location line="-278"/>
+ <location line="+60"/>
+ <source>%1 - [%2]</source>
+ <translation>%1 - [%2]</translation>
+ </message>
+ <message>
+ <location line="+214"/>
<source>&amp;Unshade</source>
<translation>В&amp;осстановить из заголовка</translation>
</message>
@@ -8226,17 +9646,7 @@ Please choose a different file name.</source>
<translation>некорректное значение параметра standalone</translation>
</message>
<message>
- <location line="+1"/>
- <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
- <translation>в объявлении XML ожидаются параметры encoding или standalone</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>standalone declaration expected while reading the XML declaration</source>
- <translation>в объявлении XML ожидается параметр standalone</translation>
- </message>
- <message>
- <location line="+1"/>
+ <location line="+3"/>
<source>error occurred while parsing document type definition</source>
<translation>ошибка разбора объявления типа документа</translation>
</message>
@@ -8273,7 +9683,7 @@ Please choose a different file name.</source>
<message>
<location line="+1"/>
<source>unparsed entity reference in wrong context</source>
- <translation>неразобранная ссылка на объект в неверном контексте</translation>
+ <translation>неразобранная ссылка на объект в неправильном контексте</translation>
</message>
<message>
<location line="+1"/>
@@ -8285,6 +9695,16 @@ Please choose a different file name.</source>
<source>error in the text declaration of an external entity</source>
<translation>ошибка в объявлении внешнего объекта</translation>
</message>
+ <message>
+ <location line="-11"/>
+ <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
+ <translation>в объявлении XML ожидаются параметры encoding или standalone</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>standalone declaration expected while reading the XML declaration</source>
+ <translation>в объявлении XML ожидается параметр standalone</translation>
+ </message>
</context>
<context>
<name>QXmlPatternistCLI</name>
@@ -8335,12 +9755,12 @@ Please choose a different file name.</source>
<message>
<location line="+259"/>
<source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
- <translation>Последовательность &apos;]]&gt;&apos; недопустима в содержимом.</translation>
+ <translation>Последовательность &quot;]]&gt;&quot; недопустима в содержимом.</translation>
</message>
<message>
<location line="+309"/>
<source>Namespace prefix &apos;%1&apos; not declared</source>
- <translation>Префикс пространства имён &apos;%1&apos; не объявлен</translation>
+ <translation>Префикс пространства имён &quot;%1&quot; не объявлен</translation>
</message>
<message>
<location line="+78"/>
@@ -8350,12 +9770,12 @@ Please choose a different file name.</source>
<message>
<location line="+115"/>
<source>Unexpected character &apos;%1&apos; in public id literal.</source>
- <translation>Неожиданный символ &apos;%1&apos; в литерале открытого идентификатора.</translation>
+ <translation>Неожиданный символ &quot;%1&quot; в литерале открытого идентификатора.</translation>
</message>
<message>
<location line="+28"/>
<source>Invalid XML version string.</source>
- <translation>Неверная строка версии XML.</translation>
+ <translation>Некорректная строка версии XML.</translation>
</message>
<message>
<location line="+2"/>
@@ -8365,7 +9785,7 @@ Please choose a different file name.</source>
<message>
<location line="+23"/>
<source>%1 is an invalid encoding name.</source>
- <translation>%1 - неверное название кодировки.</translation>
+ <translation>%1 - не является корректным названием кодировки.</translation>
</message>
<message>
<location line="+7"/>
@@ -8375,7 +9795,7 @@ Please choose a different file name.</source>
<message>
<location line="+16"/>
<source>Standalone accepts only yes or no.</source>
- <translation>Псевдоатрибут &apos;standalone&apos; может принимать только значения &apos;yes&apos; или &apos;no&apos;.</translation>
+ <translation>Псевдоатрибут &quot;standalone&quot; может принимать только значения &quot;yes&quot; или &quot;no&quot;.</translation>
</message>
<message>
<location line="+2"/>
@@ -8435,12 +9855,12 @@ Please choose a different file name.</source>
<message>
<location line="+34"/>
<source>%1 is an invalid processing instruction name.</source>
- <translation>%1 неверное название обрабатываемой инструкции.</translation>
+ <translation>%1 не является корректным названием обрабатываемой инструкции.</translation>
</message>
<message>
<location line="+11"/>
<source>Invalid processing instruction name.</source>
- <translation>Неверное название обрабатываемой инструкции.</translation>
+ <translation>Некорректное название обрабатываемой инструкции.</translation>
</message>
<message>
<location filename="../src/corelib/xml/qxmlstream.cpp" line="-536"/>
@@ -8448,7 +9868,7 @@ Please choose a different file name.</source>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="+164"/>
<location line="+53"/>
<source>Illegal namespace declaration.</source>
- <translation>Неверное объявление пространства имён.</translation>
+ <translation>Некорректное объявление пространства имён.</translation>
</message>
<message>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="+15"/>
@@ -8463,45 +9883,284 @@ Please choose a different file name.</source>
<message>
<location line="+18"/>
<source>Reference to unparsed entity &apos;%1&apos;.</source>
- <translation>Ссылка на необработанный объект &apos;%1&apos;.</translation>
+ <translation>Ссылка на необработанный объект &quot;%1&quot;.</translation>
</message>
<message>
<location line="-13"/>
<location line="+61"/>
<location line="+40"/>
<source>Entity &apos;%1&apos; not declared.</source>
- <translation>Объект &apos;%1&apos; не объявлен.</translation>
+ <translation>Объект &quot;%1&quot; не объявлен.</translation>
</message>
<message>
<location line="-26"/>
<source>Reference to external entity &apos;%1&apos; in attribute value.</source>
- <translation>Ссылка на внешний объект &apos;%1&apos; в значении атрибута.</translation>
+ <translation>Ссылка на внешний объект &quot;%1&quot; в значении атрибута.</translation>
</message>
<message>
<location line="+40"/>
<source>Invalid character reference.</source>
- <translation>Неверная символьная ссылка.</translation>
+ <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>
+ <translation>Обнаружено некорректно закодированное содержимое.</translation>
</message>
<message>
<location line="+274"/>
<source>The standalone pseudo attribute must appear after the encoding.</source>
- <translation>Псевдоатрибут &apos;standalone&apos; должен находиться после указания кодировки.</translation>
+ <translation>Псевдоатрибут &quot;standalone&quot; должен находиться после указания кодировки.</translation>
</message>
<message>
<location filename="../src/corelib/xml/qxmlstream_p.h" line="+562"/>
<source>%1 is an invalid PUBLIC identifier.</source>
- <translation>%1 - неверный идентификатор PUBLIC.</translation>
+ <translation>%1 - некорректный идентификатор PUBLIC.</translation>
</message>
</context>
<context>
<name>QtXmlPatterns</name>
<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 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="+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/qboolean.cpp" line="+78"/>
+ <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
+ <translation>Булево значение не может быть вычислено для последовательностей, которые содержат два и более атомарных значения.</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>Данные обрабатываемой инструкции не могут содержать строку &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <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 некоррекно для %2</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
+ <source>%1 is not a valid XML 1.0 character.</source>
+ <translation>Символ %1 недопустим для XML 1.0.</translation>
+ </message>
+ <message>
+ <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="+133"/>
+ <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+ <translation>В замещаемой строке &quot;%1&quot; должно сопровождаться как минимум одной цифрой, если неэкранировано.</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>В замещаемой строке символ &quot;%1&quot; может использоваться только для экранирования самого себя или &quot;%2&quot;, но не &quot;%3&quot;</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
+ <source>%1 matches newline characters</source>
+ <translation>%1 соответствует символам конца строки</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Matches are case insensitive</source>
+ <translation>Соответствия регистронезависимы</translation>
+ </message>
+ <message>
+ <location line="+104"/>
+ <source>%1 is an invalid regular expression pattern: %2</source>
+ <translation>%1 - некорректный шаблон регулярного выражения: %2</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
+ <source>It will not be possible to retrieve %1.</source>
+ <translation>Будет невозможно восстановить %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+266"/>
+ <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/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="+352"/>
+ <location line="+7323"/>
+ <source>%1 is an unknown schema type.</source>
+ <translation>%1 является схемой неизвестного типа.</translation>
+ </message>
+ <message>
+ <location line="-7254"/>
+ <source>A template with name %1 has already been declared.</source>
+ <translation>Шаблон с именем %1 уже был объявлен.</translation>
+ </message>
+ <message>
+ <location line="+213"/>
+ <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 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="+2904"/>
+ <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+ <translation>Версия %1 не поддерживается. Поддерживается XQuery версии 1.0.</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>No function with signature %1 is available</source>
+ <translation>Функция с сигнатурой %1 отсутствует</translation>
+ </message>
+ <message>
+ <location line="+303"/>
+ <source>It is not possible to redeclare prefix %1.</source>
+ <translation>Невозможно переопределить префикс %1.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Prefix %1 is already declared in the prolog.</source>
+ <translation>Префикс %1 уже объявлен в прологе.</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>
+ <message>
+ <location line="+178"/>
+ <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="+1709"/>
+ <source>The %1-axis is unsupported in XQuery</source>
+ <translation>Ось %1 не поддерживается в XQuery</translation>
+ </message>
+ <message>
+ <location line="+435"/>
+ <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+ <translation>URI пространства имён не может быть пустой строкой при связывании с префиксом %1.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1 is an invalid namespace URI.</source>
+ <translation>%1 - некорректный URI пространства имён.</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="+30"/>
+ <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>URI пространства имён должен быть константой и не может содержать выражений.</translation>
+ </message>
+ <message>
+ <location line="+699"/>
+ <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 filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
+ <source>empty</source>
+ <translation>пусто</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>zero or one</source>
+ <translation>нуль или один</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>нуль или более</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+156"/>
+ <source>The focus is undefined.</source>
+ <translation>Фокус не определён.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+93"/>
+ <source>An attribute by name %1 has already been created.</source>
+ <translation>Атрибут с именем %1 уже существует.</translation>
+ </message>
+ <message>
<location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation>Время ожидания сети истекло.</translation>
@@ -8509,7 +10168,7 @@ Please choose a different file name.</source>
<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>Элемент %1 не может быть сериализован, так как присутствует вне документа.</translation>
+ <translation>Элемент %1 не может быть сериализован, так как расположен вне документа.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
@@ -8539,12 +10198,12 @@ Please choose a different file name.</source>
<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>
+ <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>
+ <translation>Время %1:%2:%3.%4 некорректно.</translation>
</message>
<message>
<location line="+115"/>
@@ -8552,43 +10211,12 @@ Please choose a different file name.</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"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="-7"/>
<source>At least one time component must appear after the %1-delimiter.</source>
<translation>Как минимум одна компонента времени должна следовать за разделителем &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
- <source>%1 is not a valid value of type %2.</source>
- <translation>%1 не является правильным значением типа %2.</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>При преобразовании %2 в %1 исходное значение не может быть %3.</translation>
- </message>
- <message>
- <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 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>Деление числа типа %1 на %2 (не числовое выражение) недопустимо.</translation>
@@ -8609,11 +10237,6 @@ Please choose a different file name.</source>
<translation>Значение типа %1 не может быть булевым значением.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+78"/>
- <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
- <translation>Булево значение не может быть вычислено для последовательностей, которые содержат два и более атомарных значения.</translation>
- </message>
- <message>
<location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation>Значение %1 типа %2 больше максимума (%3).</translation>
@@ -8714,45 +10337,16 @@ Please choose a different file name.</source>
<translation>Последняя часть пути должна содержать узлы или атомарные значения, но не может содержать и то, и другое одновременно.</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>Данные обрабатываемой инструкции не могут содержать строку &apos;%1&apos;</translation>
- </message>
- <message>
<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="+156"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="-12"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation>Отсутствует привязка к пространству имён для префикса %1 в %2</translation>
</message>
<message>
- <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="+77"/>
- <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
- <translation>
- <numerusform>%1 принимает не более %n аргумента. Следовательно, %2 неверно.</numerusform>
- <numerusform>%1 принимает не более %n аргументов. Следовательно, %2 неверно.</numerusform>
- <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>
- <numerusform>%1 принимает не менее %n аргументов. Следовательно, %2 неверно.</numerusform>
- <numerusform>%1 принимает не менее %n аргументов. Следовательно, %2 неверно.</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>Первый аргумент %1 не может быть типа %2. Он должен быть числового типа, типа xs:yearMonthDuration или типа xs:dayTimeDuration.</translation>
@@ -8768,64 +10362,29 @@ Please choose a different file name.</source>
<translation>Второй аргумент %1 не может быть типа %2. Он должен быть типа %3, %4 или %5.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
- <source>%1 is not a valid XML 1.0 character.</source>
- <translation>Символ %1 недопустим для XML 1.0.</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>Если оба значения имеют региональные смещения, смещения должны быть одинаковы. %1 и %2 не одинаковы.</translation>
</message>
<message>
- <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="+94"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="-65"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
- <translation>&apos;%1&apos; должно сопровождаться &apos;%2&apos; или &apos;%3&apos;, но не в конце замещаемой строки.</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>В замещаемой строке &apos;%1&apos; должно сопровождаться как минимум одной цифрой, если неэкранировано.</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>В замещаемой строке символ &apos;%1&apos; может использоваться только для экранирования самого себя или &apos;%2&apos;, но не &apos;%3&apos;</translation>
+ <translation>&quot;%1&quot; должно сопровождаться &quot;%2&quot; или &quot;%3&quot;, но не в конце замещаемой строки.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
- <source>%1 matches newline characters</source>
- <translation>%1 соответствует символам конца строки</translation>
- </message>
- <message>
- <location line="+4"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="-110"/>
<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"/>
+ <location line="+10"/>
<source>Whitespace characters are removed, except when they appear in character classes</source>
- <translation type="unfinished">Символы пробелов удалены, за исключением тех, что были в классах символов</translation>
- </message>
- <message>
- <location line="+100"/>
- <source>%1 is an invalid regular expression pattern: %2</source>
- <translation>%1 - неверный шаблон регулярного выражения: %2</translation>
+ <translation>Символы пробелов удалены (за исключением тех, что были в символах классов)</translation>
</message>
<message>
- <location line="+30"/>
+ <location line="+130"/>
<source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
- <translation>%1 - неверный флаг для регулярного выражения. Допустимые флаги:</translation>
+ <translation>%1 - некорректный флаг регулярного выражения. Допустимые флаги:</translation>
</message>
<message>
<location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+17"/>
@@ -8833,26 +10392,6 @@ Please choose a different file name.</source>
<translation>Префикс не должен быть указан, если первый параметр - пустая последовательность или пустая строка (вне пространства имён). Был указан префикс %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
- <source>It will not be possible to retrieve %1.</source>
- <translation>Будет невозможно восстановить %1.</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>Корневой узел второго аргумента функции %1 должен быть документом. %2 не является документом.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+266"/>
- <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="+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>
@@ -8863,144 +10402,22 @@ Please choose a different file name.</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="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation>Необходимо %1 элементов, получено %2.</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>Элемент %1 не соответствует необходимому типу %2.</translation>
- </message>
- <message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+352"/>
- <location line="+7323"/>
- <source>%1 is an unknown schema type.</source>
- <translation>%1 является схемой неизвестного типа.</translation>
- </message>
- <message>
- <location line="-7254"/>
- <source>A template with name %1 has already been declared.</source>
- <translation>Шаблон с именем %1 уже был объявлен.</translation>
- </message>
- <message>
- <location line="+213"/>
- <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 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="+2904"/>
- <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"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3944"/>
<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>
- <message>
- <location line="+18"/>
- <source>Prefix %1 is already declared in the prolog.</source>
- <translation>Префикс %1 уже объявлен в прологе.</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>
+ <translation>Имя кодировки %1 некорректно. Имя кодировки должно содержать только символы латиницы без пробелов и должно удовлетворять регулярному выражению %2.</translation>
</message>
<message>
- <location line="+8"/>
- <source>The module import feature is not supported</source>
- <translation>Возможность импорта модулей не поддерживается</translation>
- </message>
- <message>
- <location line="-403"/>
+ <location line="+260"/>
<source>The keyword %1 cannot occur with any other mode name.</source>
<translation>Ключевое слово %1 не может встречаться с любым другим названием режима.</translation>
</message>
<message>
- <location line="+551"/>
- <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="-3755"/>
+ <location line="-3117"/>
<source>No variable with name %1 exists</source>
<translation>Переменная с именем %1 отсутствует</translation>
</message>
@@ -9025,7 +10442,17 @@ Please choose a different file name.</source>
<translation>Отсутствует значение для внешней переменной с именем %1.</translation>
</message>
<message>
- <location line="+220"/>
+ <location line="+96"/>
+ <source>A stylesheet function must have a prefixed name.</source>
+ <translation>Функция стилей должна иметь имя с префиксом.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <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="+106"/>
<source>An argument with name %1 has already been declared. Every argument name must be unique.</source>
<translation>Аргумент с именем %1 уже объявлен. Имя каждого аргумента должно быть уникальным.</translation>
</message>
@@ -9062,12 +10489,12 @@ Please choose a different file name.</source>
<message>
<location line="+126"/>
<source>%1 is an invalid template mode name.</source>
- <translation>%1 является неверным шаблоном имени режима.</translation>
+ <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 type="unfinished">Имя переменной, связанной с выражением for, должно отличаться от позиционной переменной. Две переменные с именем %1 конфликтуют.</translation>
+ <translation>Имя переменной, связанной с выражением for, должно отличаться от позиционной переменной. Две переменные с именем %1 конфликтуют.</translation>
</message>
<message>
<location line="+778"/>
@@ -9085,29 +10512,14 @@ Please choose a different file name.</source>
<translation>Имя каждого параметра шаблона должно быть уникальным, но %1 повторяется.</translation>
</message>
<message>
- <location line="+129"/>
- <source>The %1-axis is unsupported in XQuery</source>
- <translation>Ось %1 не поддерживается в XQuery</translation>
- </message>
- <message>
- <location line="+333"/>
+ <location line="+462"/>
<source>No function with name %1 is available.</source>
<translation>Функция с именем %1 отсутствует.</translation>
</message>
<message>
- <location line="+250"/>
- <source>An attribute with name %1 has already appeared on this element.</source>
- <translation>Атрибут с именем %1 уже существует для данного элемента.</translation>
- </message>
- <message>
- <location line="+614"/>
- <source>%1 is not a valid name for a processing-instruction.</source>
- <translation>%1 является неверным названием для инструкции обработки.</translation>
- </message>
- <message>
- <location line="-7099"/>
+ <location line="-6235"/>
<source>%1 is not a valid numeric literal.</source>
- <translation>%1 является неверным числовым литералом.</translation>
+ <translation>%1 не является корректным числовым литералом.</translation>
</message>
<message>
<location line="-152"/>
@@ -9125,22 +10537,7 @@ Please choose a different file name.</source>
<translation>Встречена конструкция, запрещённая для текущего языка (%1).</translation>
</message>
<message>
- <location line="+6482"/>
- <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
- <translation>URI пространства имён не может быть пустой строкой при связывании с префиксом %1.</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>%1 is an invalid namespace URI.</source>
- <translation>%1 - неверный URI пространства имён.</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"/>
+ <location line="+6502"/>
<source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
<translation>Пространство имён %1 может быть связано только с %2 (в данном случае уже предопределено).</translation>
</message>
@@ -9150,17 +10547,12 @@ Please choose a different file name.</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>URI пространства имён должно быть константой и не может содержать выражений.</translation>
+ <location line="+120"/>
+ <source>An attribute with name %1 has already appeared on this element.</source>
+ <translation>Атрибут с именем %1 уже существует для данного элемента.</translation>
</message>
<message>
- <location line="+77"/>
+ <location line="+61"/>
<source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
<translation>Прямой конструктор элемента составлен некорректно. %1 заканчивается на %2.</translation>
</message>
@@ -9180,70 +10572,98 @@ Please choose a different file name.</source>
<translation>%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>
+ <location line="+76"/>
+ <source>%1 is not a valid name for a processing-instruction.</source>
+ <translation>%1 не является корректным названием инструкции обработки.</translation>
</message>
<message>
- <location line="+48"/>
+ <location line="+188"/>
<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="+55"/>
- <source>empty</source>
- <translation>пусто</translation>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="-93"/>
+ <source>Required type is %1, but %2 was found.</source>
+ <translation>Требуется тип %1, но обнаружен %2.</translation>
</message>
<message>
- <location line="+2"/>
- <source>zero or one</source>
- <translation>нуль или один</translation>
+ <location line="+44"/>
+ <source>Promoting %1 to %2 may cause loss of precision.</source>
+ <translation>Преобразование %1 к %2 может снизить точность.</translation>
</message>
<message>
- <location line="+2"/>
- <source>exactly one</source>
- <translation>ровно один</translation>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="-7"/>
+ <source>It&apos;s not possible to add attributes after any other kind of node.</source>
+ <translation>Невозможно добавлять атрибуты после любого другого вида узла.</translation>
</message>
<message>
- <location line="+2"/>
- <source>one or more</source>
- <translation>один или более</translation>
+ <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 line="+2"/>
- <source>zero or more</source>
- <translation>нуль или более</translation>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="-180"/>
+ <source>Integer division (%1) by zero (%2) is undefined.</source>
+ <translation>Целочисленное деление (%1) на нуль (%2) не определено.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
- <source>Required type is %1, but %2 was found.</source>
- <translation>Требуется тип %1, но обнаружен %2.</translation>
+ <location line="+7"/>
+ <source>Division (%1) by zero (%2) is undefined.</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>
+ <location line="+7"/>
+ <source>Modulus division (%1) by zero (%2) is undefined.</source>
+ <translation>Деление по модулю (%1) на нуль (%2) не определено.</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
+ <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+ <translation>
+ <numerusform>%1 принимает не более %n аргумента. Следовательно, %2 некорректно.</numerusform>
+ <numerusform>%1 принимает не более %n аргументов. Следовательно, %2 некорректно.</numerusform>
+ <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>
+ <numerusform>%1 принимает не менее %n аргументов. Следовательно, %2 некорректно.</numerusform>
+ <numerusform>%1 принимает не менее %n аргументов. Следовательно, %2 некорректно.</numerusform>
+ </translation>
</message>
<message>
- <location line="+49"/>
- <source>The focus is undefined.</source>
- <translation>Фокус не определён.</translation>
+ <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/utils/qoutputvalidator.cpp" line="+86"/>
- <source>It&apos;s not possible to add attributes after any other kind of node.</source>
- <translation>Невозможно добавлять атрибуты после любого другого вида узла.</translation>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3172"/>
+ <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="+7"/>
- <source>An attribute by name %1 has already been created.</source>
- <translation>Атрибут с именем %1 уже существует.</translation>
+ <location line="-693"/>
+ <location line="+10"/>
+ <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+ <translation>Объявление пространство имён по умолчанию должно быть до объявления функций, переменных и опций.</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>Поддерживается только Unicode Codepoint Collation (%1). %2 не поддерживается.</translation>
+ <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 filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+12"/>
+ <source>%1 is not a whole number of minutes.</source>
+ <translation>%1 не является полным количеством минут.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+60"/>
@@ -9398,12 +10818,12 @@ Please choose a different file name.</source>
<message>
<location line="+270"/>
<source>Element %1 cannot have children.</source>
- <translation>У элемента %1 не может быть потомков.</translation>
+ <translation>Элемент %1 не может иметь потомков.</translation>
</message>
<message>
<location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
- <translation>У элемента %1 не может быть конструктора последовательности.</translation>
+ <translation type="unfinished">Элемент %1 не может иметь конструктор последовательности.</translation>
</message>
<message>
<location line="+86"/>
@@ -9414,7 +10834,7 @@ Please choose a different file name.</source>
<message>
<location line="+15"/>
<source>A parameter in a function cannot be declared to be a tunnel.</source>
- <translation type="unfinished">Параметр в функции не может быть объявлен туннелем.</translation>
+ <translation type="unfinished">Параметр функции не может быть объявлен туннелем.</translation>
</message>
<message>
<location line="+149"/>
@@ -9942,13 +11362,13 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+28"/>
- <location line="+408"/>
+ <location line="+415"/>
<location line="+30"/>
<source>Type %1 of %2 element cannot be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-416"/>
+ <location line="-423"/>
<source>Base type %1 of complex type cannot be resolved.</source>
<translation type="unfinished"></translation>
</message>
@@ -9958,7 +11378,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+279"/>
+ <location line="+286"/>
<source>Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.</source>
<translation type="unfinished"></translation>
</message>
@@ -10148,7 +11568,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+127"/>
+ <location line="+143"/>
<source>Document is not a XML schema.</source>
<translation type="unfinished"></translation>
</message>
@@ -10174,7 +11594,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+237"/>
+ <location line="+243"/>
<source>%1 element is not allowed to have the same %2 attribute value as the target namespace %3.</source>
<translation type="unfinished"></translation>
</message>
@@ -10184,7 +11604,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+833"/>
+ <location line="+851"/>
<location line="+158"/>
<source>%1 element is not allowed inside %2 element if %3 attribute is present.</source>
<translation type="unfinished"></translation>
@@ -10288,7 +11708,7 @@ Please choose a different file name.</source>
<message>
<location line="+19"/>
<source>Text or entity references not allowed inside %1 element</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Текст или ссылка на объект недопустимы в качестве содержимого элемента %1</translation>
</message>
<message>
<location line="+41"/>
@@ -10325,17 +11745,17 @@ Please choose a different file name.</source>
<message>
<location line="+17"/>
<source>Element %1 already defined.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 уже определён.</translation>
</message>
<message>
<location line="+11"/>
<source>Attribute %1 already defined.</source>
- <translation type="unfinished"></translation>
+ <translation>Атрибут %1 уже определён.</translation>
</message>
<message>
<location line="+15"/>
<source>Type %1 already defined.</source>
- <translation type="unfinished"></translation>
+ <translation>Тип %1 уже определён.</translation>
</message>
<message>
<location line="+23"/>
@@ -10345,7 +11765,7 @@ Please choose a different file name.</source>
<message>
<location line="+11"/>
<source>Element group %1 already defined.</source>
- <translation type="unfinished"></translation>
+ <translation>Группа элементов %1 уже определёна.</translation>
</message>
<message>
<location line="+11"/>
@@ -10367,7 +11787,7 @@ Please choose a different file name.</source>
<location line="+7"/>
<location line="+21"/>
<source>%1 is not valid according to %2.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 некорректно в соответствии с %2.</translation>
</message>
<message>
<location line="+167"/>
@@ -10592,7 +12012,7 @@ Please choose a different file name.</source>
<message>
<location line="+27"/>
<source>Invalid QName content: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Некорректное содержимое QName: %1.</translation>
</message>
<message>
<location line="+17"/>
@@ -10662,32 +12082,32 @@ Please choose a different file name.</source>
<message>
<location line="+27"/>
<source>Loaded schema file is invalid.</source>
- <translation type="unfinished"></translation>
+ <translation>Загруженный файл схемы некорректен.</translation>
</message>
<message>
<location line="+16"/>
<source>%1 contains invalid data.</source>
- <translation type="unfinished"></translation>
+ <translation>%1 содержит некорректные данные.</translation>
</message>
<message>
<location line="+13"/>
<source>xsi:schemaLocation namespace %1 has already appeared earlier in the instance document.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Пространство имён xsi:schemaLocation %1 уже встречалось ранее в данном документе.</translation>
</message>
<message>
<location line="+22"/>
<source>xsi:noNamespaceSchemaLocation cannot appear after the first no-namespace element or attribute.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">xsi:noNamespaceSchemaLocation не может встречаться после первого не-`namespace` элемента или атрибута.</translation>
</message>
<message>
<location line="+18"/>
<source>No schema defined for validation.</source>
- <translation type="unfinished"></translation>
+ <translation>Схема для проверки не определена.</translation>
</message>
<message>
<location line="+10"/>
<source>No definition for element %1 available.</source>
- <translation type="unfinished"></translation>
+ <translation>Отсутствует определение элемента %1.</translation>
</message>
<message>
<location line="+18"/>
@@ -10699,7 +12119,7 @@ Please choose a different file name.</source>
<message>
<location line="-176"/>
<source>Element %1 is not defined in this scope.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 не определён в данном контексте.</translation>
</message>
<message>
<location line="+43"/>
@@ -10719,7 +12139,7 @@ Please choose a different file name.</source>
<message>
<location line="+7"/>
<source>Element %1 is not nillable.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 необнуляемый.</translation>
</message>
<message>
<location line="+8"/>
@@ -10729,7 +12149,7 @@ Please choose a different file name.</source>
<message>
<location line="+8"/>
<source>Element contains content although it is nillable.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент необнуляемый, т.к. имеет содержимое.</translation>
</message>
<message>
<location line="+6"/>
@@ -10739,7 +12159,7 @@ Please choose a different file name.</source>
<message>
<location line="+230"/>
<source>Element %1 cannot contain other elements, as it has a fixed content.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Элемент %1 не может содержать другие элементы, т.к. имеет статическое содержимое.</translation>
</message>
<message>
<location line="-198"/>
@@ -10850,7 +12270,7 @@ Please choose a different file name.</source>
<message>
<location line="+64"/>
<source>More than one value found for field %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Для поля %1 найдено более одного значения.</translation>
</message>
<message>
<location line="+20"/>
@@ -10860,12 +12280,12 @@ Please choose a different file name.</source>
<message>
<location line="+73"/>
<source>ID value &apos;%1&apos; is not unique.</source>
- <translation type="unfinished"></translation>
+ <translation>Значение ID &quot;%1&quot; неуникально.</translation>
</message>
<message>
<location line="+11"/>
<source>&apos;%1&apos; attribute contains invalid QName content: %2.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Атрибут `%1` имеет некорректное содержимое QName: %2.</translation>
</message>
</context>
</TS>
diff --git a/translations/qtconfig_hu.ts b/translations/qtconfig_hu.ts
index 0eaead0..549a5d8 100644
--- a/translations/qtconfig_hu.ts
+++ b/translations/qtconfig_hu.ts
@@ -1,35 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="hu">
+<TS version="2.0" language="hu_HU">
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/qtconfig/mainwindow.cpp" line="+202"/>
+ <location filename="../tools/qtconfig/mainwindow.cpp" line="+204"/>
<source>Desktop Settings (Default)</source>
- <translation>Asztali beállítások (Alapértelmezett)</translation>
+ <translation>Az asztal beállításai (Alapértelmezett)</translation>
</message>
<message>
<location line="+5"/>
<source>Choose style and palette based on your desktop settings.</source>
- <translation>Stílus és paletta alapú kiválasztása az asztali beállításokban.</translation>
+ <translation>Stílus és paletta választása az asztal beállításai alapján.</translation>
</message>
<message>
<location line="+144"/>
<source>On The Spot</source>
- <translation>Azon nyomban</translation>
+ <translation>On The Spot</translation>
</message>
<message>
<location line="+33"/>
<location line="+1"/>
- <location line="+38"/>
+ <location line="+40"/>
<location line="+1"/>
<source>Auto (default)</source>
<translation>Automatikus (alapértelmezett)</translation>
</message>
<message>
- <location line="-38"/>
+ <location line="-40"/>
<source>Choose audio output automatically.</source>
- <translation>Audió kimenet automatikus kiválasztása.</translation>
+ <translation>Válasszon automatikusan egy hangkimenetet.</translation>
</message>
<message>
<location line="+1"/>
@@ -40,17 +40,17 @@
<message>
<location line="+1"/>
<source>Experimental aRts support for GStreamer.</source>
- <translation>Kísérleti aRts támogatás a GStreamerhez.</translation>
+ <translation>Kísérleti aRts támogatás GStreamer-hez.</translation>
</message>
<message>
- <location line="+31"/>
+ <location line="+33"/>
<source>Phonon GStreamer backend not available.</source>
- <translation>Phonon GStreamer backend nem elérhető.</translation>
+ <translation>Phonon GStreamer segítő nem érhető el.</translation>
</message>
<message>
<location line="+4"/>
<source>Choose render method automatically</source>
- <translation>Render eljárás automatikus kiválasztása</translation>
+ <translation>Válasszon automatikusan egy renderelési módot</translation>
</message>
<message>
<location line="+2"/>
@@ -61,7 +61,8 @@
<message>
<location line="+0"/>
<source>Use X11 Overlays</source>
- <translation>X11 borítás használata</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Használja az X11 átlapolást</translation>
</message>
<message>
<location line="+3"/>
@@ -70,72 +71,76 @@
<translation>OpenGL</translation>
</message>
<message>
- <location line="+0"/>
<source>Use OpenGL if avaiable</source>
- <translation>OpenGL használata, ha rendelkezésre áll</translation>
+ <translation type="obsolete">Használja az OpenGL-t ha elérhető</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Use OpenGL if available</source>
+ <translation>Használja az OpenGL-t ha elérhető</translation>
</message>
<message>
<location line="+2"/>
<location line="+1"/>
<source>Software</source>
- <translation>Szoftver</translation>
+ <translation>Szoftveres</translation>
</message>
<message>
<location line="+0"/>
<source>Use simple software rendering</source>
- <translation>Egyszerű szoftver adás használata</translation>
+ <translation>Használjon szoftveres renderelést</translation>
</message>
<message>
<location line="+27"/>
<source>No changes to be saved.</source>
- <translation>A változtatások nincsenek elmentve.</translation>
+ <translation>Nem történt változás.</translation>
</message>
<message>
<location line="+4"/>
<source>Saving changes...</source>
- <translation>Változtatások elmentése...</translation>
+ <translation>Változások mentése...</translation>
</message>
<message>
<location line="+48"/>
<source>Over The Spot</source>
- <translation>Célon túlmenően</translation>
+ <translation>Over The Spot</translation>
</message>
<message>
<location line="+2"/>
<source>Off The Spot</source>
- <translation>Elkalandozás</translation>
+ <translation>Off The Spot</translation>
</message>
<message>
<location line="+2"/>
<source>Root</source>
- <translation>Rendszergazda</translation>
+ <translation>Root</translation>
</message>
<message>
<location line="+466"/>
<source>Select a Directory</source>
- <translation>Egy könyvtár kiválasztása</translation>
+ <translation>Válasszon egy könyvtárat</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) 2010 Nokia Corporation and/or its subsidiary(-ies).</source>
- <translation>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Verzió %2&lt;br/&gt;&lt;br/&gt;Szerzői jog (C) 2010 Nokia vállalat és/vagy leányvállalata(i).</translation>
+ <translation>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Verzió %2&lt;br/&gt;&lt;br/&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</translation>
</message>
<message>
<location line="+3"/>
<location line="+1"/>
<location line="+8"/>
<source>Qt Configuration</source>
- <translation>Qt Konfiguráció</translation>
+ <translation>Qt beállítás</translation>
</message>
<message>
<location line="+22"/>
<source>Save Changes</source>
- <translation>Változtatások elmentése</translation>
+ <translation>Változások mentése</translation>
</message>
<message>
<location line="+1"/>
<source>Save changes to settings?</source>
- <translation>Változtatások elmentése a beállításokba ?</translation>
+ <translation>Menti a beállítások változását?</translation>
</message>
<message>
<location line="+1"/>
@@ -150,416 +155,395 @@
<message>
<location line="+0"/>
<source>&amp;Cancel</source>
- <translation>&amp;Mégse</translation>
+ <translation>&amp;Mégsem</translation>
</message>
</context>
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/qtconfig/mainwindowbase.ui" line="+54"/>
+ <location filename="../tools/qtconfig/mainwindowbase.ui"/>
<source>Qt Configuration</source>
- <translation>Qt Konfiguráció
-</translation>
+ <translation>Qt beállítás</translation>
</message>
<message>
- <location line="+35"/>
+ <location/>
<source>Appearance</source>
- <translation>Feltűnés</translation>
+ <translation>Megjelenés</translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>GUI Style</source>
- <translation>GUI Stílus</translation>
+ <translation>GUI stílus</translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>Select GUI &amp;Style:</source>
- <translation>GUI &amp;Stílus kiválasztása:</translation>
+ <translation>Válasszon egy &amp;stílust:</translation>
</message>
<message>
- <location line="+88"/>
- <source>Build Palette</source>
- <translation>Építési paletta</translation>
+ <location/>
+ <source>Preview</source>
+ <translation>Előnézet</translation>
</message>
<message>
- <location line="+12"/>
- <source>&amp;3-D Effects:</source>
- <translation>&amp;3 D Hatások:</translation>
+ <location/>
+ <source>Select &amp;Palette:</source>
+ <translation>Előnézet &amp;választása:</translation>
</message>
<message>
- <location line="+31"/>
- <source>Window Back&amp;ground:</source>
- <translation>Ablak Hát&amp;tér:</translation>
+ <location/>
+ <source>Active Palette</source>
+ <translation>Aktív elemek</translation>
</message>
<message>
- <location line="+35"/>
- <source>&amp;Tune Palette...</source>
- <translation>&amp;Hangolási paletta...</translation>
+ <location/>
+ <source>Inactive Palette</source>
+ <translation>Inaktív elemek</translation>
</message>
<message>
- <location line="+10"/>
- <source>Please use the KDE Control Center to set the palette.</source>
- <translation>Kérem használja a KDE Vezérlő Központot a paletta beállításához.</translation>
+ <location/>
+ <source>Disabled Palette</source>
+ <translation>Letiltott elemek</translation>
</message>
<message>
- <location line="-154"/>
- <source>Preview</source>
- <translation>Előnézet</translation>
+ <location/>
+ <source>Build Palette</source>
+ <translation>Paletta felépítése</translation>
</message>
<message>
- <location line="+6"/>
- <source>Select &amp;Palette:</source>
- <translation>&amp;Paletta kiválasztása:</translation>
+ <location/>
+ <source>&amp;3-D Effects:</source>
+ <translation>&amp;3-D effektek:</translation>
</message>
<message>
- <location line="+11"/>
- <source>Active Palette</source>
- <translation>Aktív paletta</translation>
+ <location/>
+ <source>Window Back&amp;ground:</source>
+ <translation>Ablak &amp;háttér:</translation>
</message>
<message>
- <location line="+5"/>
- <source>Inactive Palette</source>
- <translation>Inaktív paletta</translation>
+ <location/>
+ <source>&amp;Tune Palette...</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+5"/>
- <source>Disabled Palette</source>
- <translation>Tiltott paletta</translation>
+ <location/>
+ <source>Please use the KDE Control Center to set the palette.</source>
+ <translation>Kérem, használja a KDE vezérlőközpontot a paletta beállításához.</translation>
</message>
<message>
- <location line="+138"/>
+ <location/>
<source>Fonts</source>
- <translation>Betűk</translation>
+ <translation>Betűtípusok</translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Default Font</source>
- <translation>Alapértelmezett betű</translation>
+ <translation>Alapértelmezett betűtípus</translation>
</message>
<message>
- <location line="+45"/>
+ <location/>
<source>&amp;Style:</source>
<translation>&amp;Stílus:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>&amp;Point Size:</source>
- <translation>&amp;Pont méret:</translation>
+ <translation>&amp;Pontméret:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>F&amp;amily:</source>
- <translation>Csa&amp;lád:</translation>
+ <translation>&amp;Család:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Sample Text</source>
- <translation>Minta szöveg</translation>
+ <translation>Példa szöveg</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Font Substitution</source>
- <translation>Betű helyettesítés</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location/>
<source>S&amp;elect or Enter a Family:</source>
- <translation>Egy család ki&amp;választása vgy bevitele:</translation>
+ <translation>Válassza ki, vagy írja b&amp;íe a betűcsaládot:</translation>
</message>
<message>
- <location line="+38"/>
+ <location/>
<source>Current Substitutions:</source>
- <translation>Aktuális helyettesítés:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+18"/>
- <location line="+501"/>
+ <location/>
<source>Up</source>
<translation>Fel</translation>
</message>
<message>
- <location line="-494"/>
- <location line="+508"/>
+ <location/>
<source>Down</source>
<translation>Le</translation>
</message>
<message>
- <location line="-501"/>
- <location line="+494"/>
+ <location/>
<source>Remove</source>
- <translation>Eltávolítás</translation>
+ <translation>Törlés</translation>
</message>
<message>
- <location line="-464"/>
+ <location/>
<source>Select s&amp;ubstitute Family:</source>
- <translation>Család &amp;helyettesítésének kiválasztása:</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
- <location line="+487"/>
+ <location/>
<source>Add</source>
- <translation>Hozzáad</translation>
+ <translation>Hozzáadás</translation>
</message>
<message>
- <location line="-474"/>
+ <location/>
<source>Interface</source>
- <translation>Interfész</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Interfész</translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Feel Settings</source>
- <translation>Érzet beállítások</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
- <location line="+26"/>
+ <location/>
<source> ms</source>
- <translation> ms</translation>
+ <translation></translation>
</message>
<message>
- <location line="-13"/>
+ <location/>
<source>&amp;Double Click Interval:</source>
- <translation>&amp;Dupla kattintási intervallum:</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">&amp;Dupla kattintás sebessége:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>No blinking</source>
<translation>Nincs villogás</translation>
</message>
<message>
- <location line="+16"/>
+ <location/>
<source>&amp;Cursor Flash Time:</source>
- <translation>&amp;Kurzor flash idő:</translation>
+ <translation>&amp;Kurzor villogás sebessége:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source> lines</source>
- <translation>sorok</translation>
+ <translation> sor</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Wheel &amp;Scroll Lines:</source>
- <translation>Kerék sor &amp;görgetés:</translation>
+ <translation>Görgetett &amp;sorok száma:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Resolve symlinks in URLs</source>
- <translation>URL-ben található szimlinkek megoldása</translation>
+ <translation>Szimbolikus linkek feloldása az URL-ekben</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>GUI Effects</source>
- <translation>GUI hatások</translation>
+ <translation>GUI effektek</translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>&amp;Enable</source>
<translation>&amp;Engedélyezés</translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Alt+E</source>
- <translation>Alt+E</translation>
+ <translation></translation>
</message>
<message>
- <location line="+22"/>
+ <location/>
<source>&amp;Menu Effect:</source>
- <translation>&amp;Menü hatás:</translation>
+ <translation>&amp;Menü effekt:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>C&amp;omboBox Effect:</source>
- <translation>C&amp;omboBox hatás:</translation>
+ <translation>&amp;Legördülő lista effekt:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>&amp;ToolTip Effect:</source>
- <translation>&amp;Eszköz tipp hatás:</translation>
+ <translation>&amp;ToolTip effekt:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Tool&amp;Box Effect:</source>
- <translation>Eszköz&amp;doboz hatás:</translation>
+ <translation>Eszköz&amp;tár effekt:</translation>
</message>
<message>
- <location line="+17"/>
- <location line="+19"/>
- <location line="+14"/>
- <location line="+19"/>
+ <location/>
<source>Disable</source>
- <translation>Tiltás</translation>
+ <translation>Letiltás</translation>
</message>
<message>
- <location line="-47"/>
- <location line="+19"/>
- <location line="+14"/>
- <location line="+19"/>
+ <location/>
<source>Animate</source>
- <translation>Animálás</translation>
+ <translation>Animáció</translation>
</message>
<message>
- <location line="-47"/>
- <location line="+33"/>
+ <location/>
<source>Fade</source>
- <translation>Elhalkulás</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+28"/>
+ <location/>
<source>Global Strut</source>
- <translation>Globális struktúra</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>Minimum &amp;Width:</source>
- <translation>Minimum &amp;szélesség:</translation>
+ <translation>Minimum s&amp;zélesség:</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Minimum Hei&amp;ght:</source>
- <translation>Minimum ma&amp;gasség:</translation>
+ <translation>Minimum &amp;magasság:</translation>
</message>
<message>
- <location line="+10"/>
- <location line="+10"/>
+ <location/>
<source> pixels</source>
- <translation>pixelek</translation>
+ <translation> pixel</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Enhanced support for languages written right-to-left</source>
- <translation>Kiterjesztett támogatás a jobbról balra írt nyelvek számára</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Javított támogatás balról jobbra író nyelvekhez</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>XIM Input Style:</source>
<translation>XIM beviteli stílus:</translation>
</message>
<message>
- <location line="+11"/>
+ <location/>
<source>On The Spot</source>
- <translation>Azon nyomban</translation>
+ <translation>On The Spot</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Over The Spot</source>
- <translation>Célon túlmenően</translation>
+ <translation>Over The Spot</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Off The Spot</source>
- <translation>Elkalandozás</translation>
+ <translation>Off The Spot</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Root</source>
- <translation>Rendszergazda</translation>
+ <translation>Root</translation>
</message>
<message>
- <location line="+8"/>
+ <location/>
<source>Default Input Method:</source>
- <translation>Alapértelmezett beviteli eljárás:</translation>
+ <translation>Alapértelmezett beviteli mód:</translation>
</message>
<message>
- <location line="+31"/>
+ <location/>
<source>Printer</source>
<translation>Nyomtató</translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Enable Font embedding</source>
- <translation>Betű beágyazás engedélyezése</translation>
+ <translation>Font beágyazás engedélyezése</translation>
</message>
<message>
- <location line="+16"/>
+ <location/>
<source>Font Paths</source>
- <translation>Betű útvonalak</translation>
+ <translation>Fontok útvonalai</translation>
</message>
<message>
- <location line="+77"/>
+ <location/>
<source>Browse...</source>
- <translation>Böngészés...</translation>
+ <translation>Tallózás...</translation>
</message>
<message>
- <location line="+7"/>
+ <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>Nyomja meg a &lt;b&gt;Böngészés&lt;/b&gt; gombot vagy lépjen be egy könyvtárba és nyomja meg az Enter gombot hogy hozzáadja őket a listához.</translation>
+ <translation>Nyomja meg a &lt;b&gt;Tallózás&lt;b&gt; gombot, vagy írja be a mappa elérési útját, majd nyomja meg az Enter-t a listához adáshoz.</translation>
</message>
<message>
- <location line="+16"/>
+ <location/>
<source>Phonon</source>
- <translation>Phonon</translation>
+ <translation></translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>About Phonon</source>
- <translation>Phonon-ról</translation>
+ <translation>A Phonon névjegye</translation>
</message>
<message>
- <location line="+6"/>
- <location line="+44"/>
+ <location/>
<source>Current Version:</source>
- <translation>Aktuális verzió:</translation>
+ <translation>Jelenlegi verzió:</translation>
</message>
<message>
- <location line="-37"/>
- <location line="+44"/>
+ <location/>
<source>Not available</source>
- <translation>Nem elérhető</translation>
+ <translation>Nem érhető el</translation>
</message>
<message>
- <location line="-37"/>
- <location line="+44"/>
+ <location/>
<source>Website:</source>
- <translation>Weblap:</translation>
+ <translation>Weboldal:</translation>
</message>
<message>
- <location line="-37"/>
+ <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; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&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;</source>
- <translation>&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; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&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>
+ <translation></translation>
</message>
<message>
- <location line="+17"/>
+ <location/>
<source>About GStreamer</source>
- <translation>GStreamer-ről</translation>
+ <translation>A GStreamer névjegye</translation>
</message>
<message>
- <location line="+27"/>
+ <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; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&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;</source>
- <translation>&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; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&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>
+ <translation></translation>
</message>
<message>
- <location line="+17"/>
+ <location/>
<source>GStreamer backend settings</source>
- <translation>GStreamer backend beállítások</translation>
+ <translation>A GStreamer backend beállításai</translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Preferred audio sink:</source>
- <translation>Preferrált audió tartály:</translation>
+ <translatorcomment>CHECKIT</translatorcomment>
+ <translation type="unfinished">Preferált hangrendszer:</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Preferred render method:</source>
- <translation>Preferrált render eljárás:</translation>
+ <translation>Preferált renderelési mód:</translation>
</message>
<message>
- <location line="+13"/>
+ <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; }
@@ -569,271 +553,270 @@ p, li { white-space: pre-wrap; }
&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; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&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;Megjegyzés: Ezekben a beállításokban történő változtatások megakadályozhatják az alkalmazásokat a megfelelő betöltéstől.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+&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;Figyelem: ezen beállítások megváltoztatása egyes alkalmazások indulásában gondokat okozhat.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
- <location line="+68"/>
+ <location/>
<source>&amp;File</source>
<translation>&amp;Fájl</translation>
</message>
<message>
- <location line="+19"/>
+ <location/>
<source>&amp;Help</source>
<translation>&amp;Súgó</translation>
</message>
<message>
- <location line="+14"/>
+ <location/>
<source>&amp;Save</source>
- <translation>&amp;Mentés</translation>
+ <translation>M&amp;entés</translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Save</source>
<translation>Mentés</translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Ctrl+S</source>
- <translation>Ctrl+S</translation>
+ <translation></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>E&amp;xit</source>
<translation>&amp;Kilépés</translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Exit</source>
<translation>Kilépés</translation>
</message>
<message>
- <location line="+8"/>
+ <location/>
<source>&amp;About</source>
<translation>&amp;Névjegy</translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>About</source>
<translation>Névjegy</translation>
</message>
<message>
- <location line="+8"/>
+ <location/>
<source>About &amp;Qt</source>
- <translation>&amp;Qt-ról</translation>
+ <translation>&amp;Qt névjegy</translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>About Qt</source>
- <translation>Qt-ról</translation>
+ <translation>A Qt névjegye</translation>
</message>
</context>
<context>
<name>PaletteEditorAdvancedBase</name>
<message>
- <location filename="../tools/qtconfig/paletteeditoradvancedbase.ui" line="+61"/>
+ <location filename="../tools/qtconfig/paletteeditoradvancedbase.ui"/>
<source>Tune Palette</source>
- <translation>Hangoló paletta</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <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;Paletta szerkesztése&lt;/b&gt;&lt;p&gt;Az aktuális widget vagy űrlap palettájának megváltoztatása&lt;/p&gt;&lt;p&gt;Egy generált paletta használata vagy szín kiválasztás mindegyik színcsoport és szín szabályra.&lt;/p&gt;&lt;p&gt;A paletta tesztelhető különböző widget szerkezetekkel az előnézeti szegmensben.&lt;/p&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+29"/>
+ <location/>
<source>Select &amp;Palette:</source>
- <translation>&amp;Paletta kiválasztása:</translation>
+ <translation type="unfinished">Előnézet &amp;választása:</translation>
</message>
<message>
- <location line="+14"/>
+ <location/>
<source>Active Palette</source>
- <translation>Aktív paletta</translation>
+ <translation type="unfinished">Aktív elemek</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Inactive Palette</source>
- <translation>Inaktív paletta</translation>
+ <translation type="unfinished">Inaktív elemek</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Disabled Palette</source>
- <translation>Paletta tiltása</translation>
+ <translation type="unfinished">Letiltott elemek</translation>
</message>
<message>
- <location line="+21"/>
+ <location/>
<source>Auto</source>
- <translation>Auto</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>Build inactive palette from active</source>
- <translation>Inaktív paletta építése aktívból</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>Build disabled palette from active</source>
- <translation>Tiltott paletta építése aktívból</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+16"/>
+ <location/>
<source>Central color &amp;roles</source>
- <translation>Központi szín &amp;szabályok</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>Choose central color role</source>
- <translation>Központi szín szabályok kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <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;Egy szín szabály kiválasztása.&lt;/b&gt;&lt;p&gt;Az elérhetp központi szabályok: &lt;ul&gt; &lt;li&gt;Ablak - általános háttér szín.&lt;/li&gt; &lt;li&gt;AblakSzöveg - általános előtér szín. &lt;/li&gt; &lt;li&gt;Alap - háttérszínként használva példul szöveg beviteli widgetekre, rendszerint fehér vagy más világos színekre. &lt;/li&gt; &lt;li&gt;Szöveg - az előtér szín van haszálva a bázissal. Rendszerint ez ugyanaz, mint az AblakSzöveg, amilyen esetekben egy jó ellentétet kell biztosítania mindkettőre Ablakkal és Bázissal. &lt;/li&gt; &lt;li&gt;Gomb - általános gomb háttér szín, ahol a gomboknak szüksége van egy háttére ami különbözik az ablakétól, mint a Macintosh stílusban. &lt;/li&gt; &lt;li&gt;GombSzöveg - egy előtér szín van használva gomb színnel. &lt;/li&gt; &lt;li&gt;Kihangsúlyozás - egy szín a kiválasztott vagy kihangsúlyozott elem jelölésére. &lt;/li&gt; &lt;li&gt;KihangsúlyozottSzöveg - egy szöveg szín, ami ellentétes a kihangsúlyozással. &lt;/li&gt; &lt;li&gt;VilágosSzöveg - egy szöveg szín, ami nagyon különböző az AblakSzövegtől és a kontrasztoktól jól van példul feketével. &lt;/li&gt; &lt;/ul&gt; &lt;/p&gt;</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location/>
<source>Window</source>
- <translation>Ablak</translation>
+ <translation type="unfinished">Ablak</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>WindowText</source>
- <translation>AblakSzöveg</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Button</source>
- <translation>Gomb</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Base</source>
- <translation>Bázis</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Text</source>
<translation>Szöveg</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>BrightText</source>
- <translation>VilágosSzöveg</translation>
+ <translation></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>ButtonText</source>
- <translation>GombSzöveg</translation>
+ <translation></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Highlight</source>
- <translation>Kihangsúlyozás</translation>
+ <translation></translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>HighlightedText</source>
- <translation>KihangsúlyozottSzöveg</translation>
+ <translation></translation>
</message>
<message>
- <location line="+52"/>
+ <location/>
<source>&amp;Select Color:</source>
- <translation>Szín &amp;kiválasztása:</translation>
+ <translation>&amp;Szín választás:</translation>
</message>
<message>
- <location line="+24"/>
- <location line="+171"/>
+ <location/>
<source>Choose a color</source>
- <translation>Egy szín kiválasztása</translation>
+ <translation>Válasszon színt</translation>
</message>
<message>
- <location line="-168"/>
+ <location/>
<source>Choose a color for the selected central color role.</source>
- <translation>Egy szín kiválasztása a kiválasztott központi szín szabályokra.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+15"/>
+ <location/>
<source>3-D shadow &amp;effects</source>
- <translation>3 D árnyék &amp;hatások</translation>
+ <translation>3D árnyék &amp;effektek</translation>
</message>
<message>
- <location line="+29"/>
+ <location/>
<source>Build &amp;from button color</source>
- <translation>Építés gomb szín&amp;ből</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Generate shadings</source>
- <translation>Árnyékolások generálása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>Check to let 3D-effect colors be calculated from button-color.</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Choose 3D-effect color role</source>
- <translation>3D hatás szín szabályok kiválasztása</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <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></translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location/>
<source>Light</source>
<translation>Világos</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Midlight</source>
- <translation>Központi fény</translation>
+ <translation>Sötétebb</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Mid</source>
- <translation>Középső</translation>
+ <translation>Közepes</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Dark</source>
<translation>Sötét</translation>
</message>
<message>
- <location line="+5"/>
+ <location/>
<source>Shadow</source>
<translation>Árnyék</translation>
</message>
<message>
- <location line="+54"/>
+ <location/>
<source>Select Co&amp;lor:</source>
<translation>&amp;Szín kiválasztása:</translation>
</message>
<message>
- <location line="+27"/>
+ <location/>
<source>Choose a color for the selected effect color role.</source>
- <translation>Egy szín kiválasztása a kiválaszott hatás szín szabályra.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+42"/>
+ <location/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location line="+9"/>
+ <location/>
<source>Close dialog and apply all changes.</source>
- <translation>Párbeszéd ablak bezárása és az összes változtatás alkalmazása.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Cancel</source>
- <translation>Mégse</translation>
+ <translation>Mégsem</translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>Close dialog and discard all changes.</source>
- <translation>Párbeszédablak bezárása és az összes változtatás eldobása.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -841,68 +824,68 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../tools/qtconfig/previewframe.cpp" line="+81"/>
<source>Desktop settings will only take effect after an application restart.</source>
- <translation>Az asztal beállítások kizárólag az alkalmazás újraindítása utan lépnek érvénybe.</translation>
+ <translation>Az asztal új beállításai kizárólag az alkalmazás újraindítása utan lépnek érvénybe.</translation>
</message>
</context>
<context>
<name>PreviewWidgetBase</name>
<message>
- <location filename="../tools/qtconfig/previewwidgetbase.ui" line="+66"/>
+ <location filename="../tools/qtconfig/previewwidgetbase.ui"/>
<source>Preview Window</source>
- <translation>Előnézet ablak</translation>
+ <translation>Előnézeti ablak</translation>
</message>
<message>
- <location line="+40"/>
+ <location/>
<source>ButtonGroup</source>
- <translation>GombCsoport</translation>
+ <translation></translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>RadioButton1</source>
- <translation>RádioGomb1</translation>
+ <translation></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>RadioButton2</source>
- <translation>RádioGomb2</translation>
+ <translation></translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>RadioButton3</source>
- <translation>RádioGomb3</translation>
+ <translation></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>ButtonGroup2</source>
- <translation>GombCsoport2</translation>
+ <translation></translation>
</message>
<message>
- <location line="+18"/>
+ <location/>
<source>CheckBox1</source>
- <translation>Jelölőnégyzet1</translation>
+ <translation></translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>CheckBox2</source>
- <translation>Jelölőnégyzet2</translation>
+ <translation></translation>
</message>
<message>
- <location line="+36"/>
+ <location/>
<source>LineEdit</source>
- <translation>SorSzerkesztés</translation>
+ <translation></translation>
</message>
<message>
- <location line="+11"/>
+ <location/>
<source>ComboBox</source>
- <translation>ComboBox</translation>
+ <translation></translation>
</message>
<message>
- <location line="+29"/>
+ <location/>
<source>PushButton</source>
- <translation>NyomóGomb</translation>
+ <translation></translation>
</message>
<message>
- <location line="+41"/>
+ <location/>
<source>&lt;p&gt;
&lt;a href=&quot;http://qt.nokia.com&quot;&gt;http://qt.nokia.com&lt;/a&gt;
&lt;/p&gt;
diff --git a/translations/qtconfig_ru.ts b/translations/qtconfig_ru.ts
index 7be0f04..2d435e6 100644
--- a/translations/qtconfig_ru.ts
+++ b/translations/qtconfig_ru.ts
@@ -4,7 +4,7 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/qtconfig/mainwindow.cpp" line="+202"/>
+ <location filename="../tools/qtconfig/mainwindow.cpp" line="+204"/>
<source>Desktop Settings (Default)</source>
<translation>Настройки рабочего стола (по умолчанию)</translation>
</message>
@@ -21,13 +21,13 @@
<message>
<location line="+33"/>
<location line="+1"/>
- <location line="+38"/>
+ <location line="+40"/>
<location line="+1"/>
<source>Auto (default)</source>
<translation>Автоматически (по умолчанию)</translation>
</message>
<message>
- <location line="-38"/>
+ <location line="-40"/>
<source>Choose audio output automatically.</source>
<translation>Автоматический выбор звукового выхода.</translation>
</message>
@@ -43,7 +43,7 @@
<translation>Экспериментальная поддержка aRts в GStreamer.</translation>
</message>
<message>
- <location line="+31"/>
+ <location line="+33"/>
<source>Phonon GStreamer backend not available.</source>
<translation>Модуль поддержки GStreamer недоступен.</translation>
</message>
@@ -71,8 +71,8 @@
</message>
<message>
<location line="+0"/>
- <source>Use OpenGL if avaiable</source>
- <translation>Использовать OpenGL, если доступен</translation>
+ <source>Use OpenGL if available</source>
+ <translation>Использовать OpenGL, если возможно</translation>
</message>
<message>
<location line="+2"/>
@@ -173,12 +173,12 @@
<message>
<location/>
<source>Select GUI &amp;Style:</source>
- <translation type="unfinished">&amp;Стиль интерфейса:</translation>
+ <translation>&amp;Стиль интерфейса:</translation>
</message>
<message>
<location/>
<source>Build Palette</source>
- <translation type="unfinished">Палитра</translation>
+ <translation>Палитра</translation>
</message>
<message>
<location/>
@@ -363,17 +363,17 @@
<message>
<location/>
<source>C&amp;omboBox Effect:</source>
- <translation type="unfinished">Эффект C&amp;omboBox:</translation>
+ <translation type="unfinished">Эффект &amp;выпадающего списка:</translation>
</message>
<message>
<location/>
<source>&amp;ToolTip Effect:</source>
- <translation type="unfinished">Эффект &amp;ToolTip:</translation>
+ <translation type="unfinished">Эффект &amp;подсказки:</translation>
</message>
<message>
<location/>
<source>Tool&amp;Box Effect:</source>
- <translation type="unfinished">Эффект Tool&amp;Box:</translation>
+ <translation type="unfinished">Эффект панели &amp;инструментов:</translation>
</message>
<message>
<location/>
@@ -393,7 +393,7 @@
<message>
<location/>
<source>Global Strut</source>
- <translation type="unfinished">Специальные возможности</translation>
+ <translation type="unfinished">Минимальные размеры</translation>
</message>
<message>
<location/>
@@ -577,7 +577,7 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Ctrl+S</source>
- <translation type="unfinished"></translation>
+ <translation>Ctrl+S</translation>
</message>
<message>
<location/>
diff --git a/translations/qvfb_hu.ts b/translations/qvfb_hu.ts
index bb8c931..9e49d26 100644
--- a/translations/qvfb_hu.ts
+++ b/translations/qvfb_hu.ts
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="hu">
+<TS version="2.0" language="hu_HU">
<context>
<name>AnimationSaveWidget</name>
<message>
- <location filename="../tools/qvfb/qvfb.cpp" line="+865"/>
+ <location filename="../tools/qvfb/qvfb.cpp" line="+868"/>
<location line="+204"/>
<source>Record</source>
- <translation>Rekord</translation>
+ <translation>Felvétel</translation>
</message>
<message>
<location line="-202"/>
@@ -22,24 +22,24 @@
<message>
<location line="+18"/>
<source>Save in MPEG format (requires netpbm package installed)</source>
- <translation>MPEG formátumba mentés (netpbm csomag telepítése szükséges)</translation>
+ <translation>Mentés MPEG formátumban (a netpbm csomagnak telepítve kell lenni)</translation>
</message>
<message>
<location line="+8"/>
<location line="+206"/>
<source>Click record to begin recording.</source>
- <translation>Kattintson az írásra az írás megkezdéséhez.</translation>
+ <translation>Kattintson ide a felvétel indításához.</translation>
</message>
<message>
<location line="-115"/>
<location line="+147"/>
<source>Finished saving.</source>
- <translation>Befejezett mentés.</translation>
+ <translation>Mentés befejezve.</translation>
</message>
<message>
<location line="-63"/>
<source>Paused. Click record to resume, or save if done.</source>
- <translation>Szüneteltetve. Kattintson az írásra a folytatáshoz, vagy mentse el, ha kész.</translation>
+ <translation>Leállítva. Kattintson a felvétel gombra a folytatáshoz, vagy a mentéshez, ha végzett.</translation>
</message>
<message>
<location line="+6"/>
@@ -65,204 +65,205 @@
<message>
<location line="+2"/>
<source>Save canceled.</source>
- <translation>Megnés visszavonva.</translation>
+ <translation>Mentés megszakítva.</translation>
</message>
<message>
<location line="+9"/>
<source>Save failed!</source>
- <translation>Mentési hiba!</translation>
+ <translation>A mentés sikertelen!</translation>
</message>
</context>
<context>
<name>Config</name>
<message>
- <location filename="../tools/qvfb/config.ui" line="+54"/>
+ <location filename="../tools/qvfb/config.ui"/>
<source>Configure</source>
- <translation>Konfigurálás</translation>
+ <translation>Beállítás</translation>
</message>
<message>
- <location line="+29"/>
+ <location/>
<source>Size</source>
<translation>Méret</translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>176x220 &quot;SmartPhone&quot;</source>
- <translation>176x220 &quot;ÜgyesTelefon&quot;</translation>
+ <translation>176x220 &quot;SmartPhone&quot;</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>240x320 &quot;PDA&quot;</source>
<translation>240x320 &quot;PDA&quot;</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>320x240 &quot;TV&quot; / &quot;QVGA&quot;</source>
<translation>320x240 &quot;TV&quot; / &quot;QVGA&quot;</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>640x480 &quot;VGA&quot;</source>
<translation>640x480 &quot;VGA&quot;</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>800x600</source>
<translation>800x600</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>1024x768</source>
<translation>1024x768</translation>
</message>
<message>
- <location line="+21"/>
+ <location/>
<source>Custom</source>
- <translation>Szokásos</translation>
+ <translation>Egyedi</translation>
</message>
<message>
- <location line="+44"/>
+ <location/>
<source>Depth</source>
- <translation>Mélység</translation>
+ <translation>Színmélység</translation>
</message>
<message>
- <location line="+6"/>
+ <location/>
<source>1 bit monochrome</source>
- <translation>1 bites egyszínű</translation>
+ <translation>1 bites monokróm</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>2 bit grayscale</source>
- <translation>2 bites szürke skálázás</translation>
+ <translation>2 bites szürkeárnyalatos</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>4 bit grayscale</source>
- <translation>4 bites szürke slálázás</translation>
+ <translation>4 bites szürkeárnyalatos</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>8 bit</source>
<translation>8 bites</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>12 (16) bit</source>
<translation>12 (16) bites</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>15 bit</source>
- <translation>15 bites</translation>
+ <translation></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>16 bit</source>
<translation>16 bites</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>18 bit</source>
- <translation>18 bites</translation>
+ <translation></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>24 bit</source>
- <translation>24 bites</translation>
+ <translation></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>32 bit</source>
- <translation>32 bites</translation>
+ <translation></translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>32 bit ARGB</source>
- <translation>32 bites ARGB</translation>
+ <translation>32 bit ARGB-vel</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Swap red and blue channels</source>
- <translation>Piros és kék csatornák felcserélése</translation>
+ <translation>Cserélje fel a piros és kék csatornát</translation>
</message>
<message>
- <location line="+3"/>
+ <location/>
<source>BGR format</source>
<translation>BGR formátum</translation>
</message>
<message>
- <location line="+20"/>
+ <location/>
<source>Skin</source>
- <translation>Szkin</translation>
+ <translation>Téma</translation>
</message>
<message>
- <location line="+14"/>
+ <location/>
<source>None</source>
- <translation>Semmi</translation>
+ <translation>Nincs</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Emulate touch screen (no mouse move)</source>
- <translatorcomment>указателя?</translatorcomment>
- <translation>Érintő képernyő emulálása (nincs egér mozgatás)</translation>
+ <translation>Érintőképernyő szimulálása (nincs egérmozgás)</translation>
</message>
<message>
- <location line="+7"/>
+ <location/>
<source>Emulate LCD screen (Only with fixed zoom of 3.0 times magnification)</source>
- <translation>LCD kijelző emulálása (Kizárólag egy fix 3-szoros nagyítással)</translation>
+ <translation>LCD képernyő emulálása (Kizárólag egy fix 3-szoros nagyítással)</translation>
</message>
<message>
- <location line="+26"/>
+ <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;Vegye figyelembe azt, hogy bármely alkalmazás, amely virtuális framebuffer-t használ, be lesz fejezve, ha megváltoztatja a méretet vagy a mélységet &lt;i&gt;felül&lt;/i&gt;. Szabadon módosíthatja a Gamma-t &lt;i&gt;alul&lt;/i&gt;.</translation>
+ <translation>&lt;p&gt;Bármely, a virtuális framebuffert használó alkalmazás leáll, ha &lt;i&gt;fent&lt;/i&gt;megváltoztatja a méretet vagy a színmélységet. A Gamma értéket szabadon módosíthatja.</translation>
</message>
<message>
- <location line="+10"/>
+ <location/>
<source>Gamma</source>
<translation>Gamma</translation>
</message>
<message>
- <location line="+12"/>
+ <location/>
<source>Blue</source>
<translation>Kék</translation>
</message>
<message>
- <location line="+489"/>
- <location line="+496"/>
- <location line="+14"/>
- <location line="+496"/>
+ <location/>
<source>1.0</source>
- <translation>1.0</translation>
+ <translation></translation>
</message>
<message>
- <location line="-999"/>
+ <location/>
<source>Green</source>
<translation>Zöld</translation>
</message>
<message>
- <location line="+496"/>
+ <location/>
<source>All</source>
<translation>Mind</translation>
</message>
<message>
- <location line="+496"/>
+ <location/>
<source>Red</source>
<translation>Piros</translation>
</message>
<message>
- <location line="+496"/>
+ <location/>
<source>Set all to 1.0</source>
- <translation>Az összes 1.0-ra állítása</translation>
+ <translation>Mindegyik legyen 1.0</translation>
</message>
<message>
- <location line="+34"/>
+ <location/>
<source>&amp;OK</source>
<translation>&amp;OK</translation>
</message>
<message>
- <location line="+13"/>
+ <location/>
<source>&amp;Cancel</source>
- <translation>&amp;Mégse</translation>
+ <translation>&amp;Mégsem</translation>
+ </message>
+ <message>
+ <location/>
+ <source>800x480</source>
+ <translation>800x480</translation>
</message>
</context>
<context>
@@ -270,75 +271,75 @@
<message>
<location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
- <translation>Nem sikerült betölteni a(z) &apos;%1&apos; kép fájlt.</translation>
+ <translation>A képfájl (%1) nem tölthető be.</translation>
</message>
<message>
<location line="+64"/>
<source>The skin directory &apos;%1&apos; does not contain a configuration file.</source>
- <translation>A(z) &apos;%1&apos; skin könyvtár nem tartalmaz egyetlen konfigurációs fájlt sem.</translation>
+ <translation>A téma könyvtár (%1) nem tartalmaz konfigurációs fájlt.</translation>
</message>
<message>
<location line="+5"/>
<source>The skin configuration file &apos;%1&apos; could not be opened.</source>
- <translation>Nem lehetett megnyitni a(z) &apos;%1&apos; skin konfigurációs fájlt.</translation>
+ <translation>A téma konfigurációs fájlja (%1) nem nyitható meg.</translation>
</message>
<message>
<location line="+6"/>
<source>The skin configuration file &apos;%1&apos; could not be read: %2</source>
- <translation>Nem lehetett olvasni a(z) &apos;%1&apos; skin konfigurációs fájlt: %2</translation>
+ <translation>A téma kofnigurációs fájlja (%1) nem olvasható: %2</translation>
</message>
<message>
<location line="+70"/>
<source>Syntax error: %1</source>
- <translation>Szintakszis hiba: %1</translation>
+ <translation>Szintaxis hiba : %1</translation>
</message>
<message>
<location line="+21"/>
<source>The skin &quot;up&quot; image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1 &apos;fel&apos; skinezett kép fájl nem létezik.</translation>
+ <translation>A témából hiányzik a &quot;felfelé&quot; kép (%1).</translation>
</message>
<message>
<location line="+10"/>
<source>The skin &quot;down&quot; image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1 &apos;le&apos; skinezett kép fájl nem létezik.</translation>
+ <translation>A témából hiányzik a &quot;lefelé&quot; kép (%1).</translation>
</message>
<message>
<location line="+11"/>
<source>The skin &quot;closed&quot; image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1&apos; skin &quot;bezárt&quot; kép fájl nem létezik.</translation>
+ <translation>A témából hiányzik a &quot;bezárva&quot; kép (%1).</translation>
</message>
<message>
<location line="+12"/>
<source>The skin cursor image file &apos;%1&apos; does not exist.</source>
- <translation>A(z) &apos;%1&apos; skin kurzor kép fájl nem létezik.</translation>
+ <translation>A témából hiányzik a kurzor (%1).</translation>
</message>
<message>
<location line="+25"/>
<source>Syntax error in area definition: %1</source>
- <translation>Szintaszis hiba a terület definícióban: %1</translation>
+ <translation>Szintaxis hiba a területdefiníciónál: %1</translation>
</message>
<message>
<location line="+38"/>
<source>Mismatch in number of areas, expected %1, got %2.</source>
- <translation>Nem megfelelő terület szám, %1 várt, %2 kapott.</translation>
+ <translation>A területek száma nem megfelelő, csak %1 van %2 helyett.</translation>
</message>
</context>
<context>
<name>QVFb</name>
<message>
- <location filename="../tools/qvfb/qvfb.cpp" line="-501"/>
+ <location filename="../tools/qvfb/qvfb.cpp" line="-504"/>
<source>Browse...</source>
- <translation>Böngészés...</translation>
+ <translation>Tallózás...</translation>
</message>
<message>
- <location line="+140"/>
+ <location line="+143"/>
<source>Load Custom Skin...</source>
- <translation>Szokásos skin betöltése...</translation>
+ <translation>Egyedi téma betöltése...</translation>
</message>
<message>
<location line="+1"/>
<source>All QVFB Skins (*.skin)</source>
- <translation>Minden QVFB skin (*.skin)</translation>
+ <translation>Minden QVFB téma (*.skin)</translation>
</message>
</context>
</TS>
diff --git a/util/s60theme/main.cpp b/util/s60theme/main.cpp
index 7f38d5c..1234fd2 100644
--- a/util/s60theme/main.cpp
+++ b/util/s60theme/main.cpp
@@ -70,9 +70,9 @@ int main(int argc, char *argv[])
const QFileInfo inputInfo(input);
const QString output = QString::fromLatin1(argv[2]);
if (inputInfo.isDir())
- return S60ThemeConvert::convertDefaultThemeToBlob(input, output);
+ return S60ThemeConvert::convertDefaultThemeToBlob(input, output) ? 0 : 1;
else if (inputInfo.suffix().compare(QString::fromLatin1("tdf"), Qt::CaseInsensitive) == 0)
- return S60ThemeConvert::convertTdfToBlob(input, output);
+ return S60ThemeConvert::convertTdfToBlob(input, output) ? 0 : 1;
return help();
}
diff --git a/util/s60theme/s60themeconvert.cpp b/util/s60theme/s60themeconvert.cpp
index 7908055..b1e8022 100644
--- a/util/s60theme/s60themeconvert.cpp
+++ b/util/s60theme/s60themeconvert.cpp
@@ -45,6 +45,8 @@
#include <QtWebKit>
static const int pictureSize = 256;
+static const char* const msgPartNotInTdf = " Warning: The .tdf file does not have a part for ";
+static const char* const msgSvgNotFound = " Fatal: Could not find part .svg ";
void dumpPartPictures(const QHash<QString, QPicture> &partPictures) {
foreach (const QString &partKey, partPictures.keys()) {
@@ -84,6 +86,7 @@ private:
WebKitSVGRenderer::WebKitSVGRenderer(QWidget *parent)
: QWebView(parent)
{
+
connect(this, SIGNAL(loadFinished(bool)), SLOT(loadFinishedSlot(bool)));
setFixedSize(pictureSize, pictureSize);
QPalette pal = palette();
@@ -202,11 +205,19 @@ bool loadThemeFromTdf(const QString &tdfFile,
return false;
const QString tdfBasePath = QFileInfo(tdfFile).absolutePath();
WebKitSVGRenderer renderer;
- foreach(const QString& partKey, parsedPartSvgs.keys()) {
- const QString tdfFullName =
- tdfBasePath + QDir::separator() + parsedPartSvgs.value(partKey);
- if (!QFile(tdfFullName).exists())
- qWarning() << "Could not find part:" << parsedPartSvgs.value(partKey);
+ foreach (const QString &partKey, QS60Style::partKeys()) {
+ qDebug() << partKey;
+ QString tdfFullName;
+ if (parsedPartSvgs.contains(partKey)) {
+ tdfFullName = tdfBasePath + QDir::separator() + parsedPartSvgs.value(partKey);
+ } else {
+ qWarning() << msgPartNotInTdf << partKey;
+ tdfFullName = tdfBasePath + QDir::separator() + partKey + QLatin1String(".svg");
+ }
+ if (!QFile(tdfFullName).exists()) {
+ qWarning() << msgSvgNotFound << QDir::toNativeSeparators(tdfFullName);
+ return false;
+ }
const QPicture partPicture = renderer.svgToQPicture(tdfFullName);
parsedPartPictures.insert(partKey, partPicture);
}
@@ -276,8 +287,8 @@ bool loadDefaultTheme(const QString &themePath,
const QString partFileName = partKey + QLatin1String(".svg");
const QString partFile(dir.absolutePath() + QDir::separator() + partFileName);
if (!QFile::exists(partFile)) {
- qWarning() << "Could not find part:" << partFileName;
- continue;
+ qWarning() << msgSvgNotFound << partFileName;
+ return false;
}
const QPicture partPicture = renderer.svgToQPicture(partFile);
partPictures.insert(partKey, partPicture);